Share via


Geschachtelte Steuerungsstrukturen

Aktualisiert: November 2007

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.

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

Aufgaben

Gewusst wie: Übertragen der Steuerung aus einer Kontrollstruktur

Konzepte

Entscheidungsstrukturen

Schleifenstruktur

Weitere Steuerungsstrukturen

Weitere Ressourcen

Ablaufsteuerung in Visual Basic