Geschachtelte Steuerungsstrukturen (Visual Basic)
Sie können Steuerungsanweisungen in andere Steuerungsanweisungen einfügen, wie z. B. einen If...Then...Else-Block in eine For...Next-Schleife. Eine Steuerungsanweisung, die in eine andere Steuerungsanweisung eingefügt wurde, ist geschachtelt.
Schachtelungsebenen
Steuerungsstrukturen in Visual Basic können auf beliebig vielen Ebenen geschachtelt werden. Es ist üblich, geschachtelte Strukturen lesbarer zu machen, indem der Text jeder Struktur eingerückt wird. Dies wird automatisch vom Editor der integrierten Entwicklungsumgebung (IDE) erledigt.
Im folgenden Beispiel addiert die sumRows-Prozedur die positiven Elemente jeder Zeile der Matrix.
Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)
Dim i, j As Integer
For i = 0 To UBound(a, 1)
r(i) = 0
For j = 0 To UBound(a, 2)
If a(i, j) > 0 Then
r(i) = r(i) + a(i, j)
End If
Next j
Next i
End Sub
Im vorhergehenden Beispiel schließt die erste Next-Anweisung die innere For-Schleife und die letzte Next-Anweisung die äußere For-Schleife.
Gleichermaßen gelten in geschachtelten If-Anweisungen die End If-Anweisungen automatisch für die nächste vorangegangene If-Anweisung. Geschachtelte Do-Schleifen funktionieren ähnlich, wobei die innerste Loop-Anweisung mit der innersten Do-Anweisung übereinstimmt.
Hinweis
Bei vielen Steuerungsstrukturen werden beim Klicken auf ein Schlüsselwort alle Schlüsselwörter der Struktur hervorgehoben.Wenn Sie in einer If...Then...Else-Konstruktion beispielsweise auf If klicken, werden in der Konstruktion alle Instanzen von If, Then, ElseIf, Else und End If hervorgehoben.Um zum nächsten oder vorherigen markierten Schlüsselwort zu springen, drücken Sie STRG+UMSCHALT+NACH-UNTEN bzw. STRG+UMSCHALT+NACH-OBEN.
Schachteln von verschiedenen Arten von Steuerungsstrukturen
Sie können eine Art von Steuerungsstruktur innerhalb einer anderen Art schachteln. Im folgenden Beispiel werden ein With-Block in einer For Each-Schleife und geschachtelte If-Blöcke im With-Block verwendet.
For Each ctl As System.Windows.Forms.Control In Me.Controls
With ctl
.BackColor = System.Drawing.Color.Yellow
.ForeColor = System.Drawing.Color.Black
If .CanFocus Then
.Text = "Colors changed"
If Not .Focus() Then
' Insert code to process failed focus.
End If
End If
End With
Next ctl
Überlappende Steuerungsstrukturen
Steuerungsstrukturen können nicht überlappen. Das bedeutet, dass alle geschachtelten Strukturen vollständig in der nächsten inneren Struktur enthalten sein müssen. Die folgende Anordnung ist beispielsweise ungültig, weil die For-Schleife vor dem inneren With-Block abgeschlossen wird.
Ungültige Schachtelung von For- und With-Strukturen
Der Visual Basic-Compiler erkennt diese überlappenden Steuerungsstrukturen und signalisiert beim Kompilieren einen Fehler.
Siehe auch
Konzepte
Entscheidungsstrukturen (Visual Basic)
Schleifenstruktur (Visual Basic)
Weitere Steuerungsstrukturen (Visual Basic)