Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan placera kontrollinstruktioner i andra kontrollinstruktioner, till exempel ett If...Then...Else block i en For...Next loop. Ett kontrolluttryck som placeras i ett annat kontrolluttryck sägs vara kapslat.
Kapslingsnivåer
Kontrollstrukturer i Visual Basic kan kapslas till så många nivåer som du vill. Det är vanligt att göra kapslade strukturer mer läsbara genom att dra in brödtexten för var och en. IDE-redigeraren (Integrated Development Environment) gör detta automatiskt.
I följande exempel lägger proceduren sumRows ihop de positiva elementen i varje rad i matrisen.
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
I föregående exempel stänger den första Next instruktionen den inre For loopen och den sista Next instruktionen stänger den yttre For loopen.
På samma sätt gäller If instruktionerna automatiskt för den närmaste föregående End If instruktionen i kapslade If instruktioner. Kapslade Do loopar fungerar på ett liknande sätt, med den innersta Loop satsen som matchar den innersta Do satsen.
Anmärkning
För många kontrollstrukturer är alla nyckelord i strukturen markerade när du klickar på ett nyckelord. När du till exempel klickar If i en If...Then...Else konstruktion markeras alla instanser av If, Then, ElseIf, Elseoch End If i konstruktionen. Om du vill flytta till nästa eller föregående markerade nyckelord trycker du på CTRL+SKIFT+NEDÅTPIL eller CTRL+SKIFT+UPPÅTPIL.
Använda olika typer av kontrollstrukturer
Du kan kapsla in en kontrollstruktur av en viss typ i en annan typ. I följande exempel används ett With-block inuti en For Each-loop och kapslade If-block inuti With-blocket.
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
Överlappande kontrollstrukturer
Du kan inte överlappa kontrollstrukturer. Det innebär att alla kapslade strukturer måste vara helt inneslutna i nästa innersta struktur. Följande arrangemang är till exempel ogiltigt eftersom loopen For avslutas innan det inre With blocket avslutas.
Visual Basic-kompilatorn identifierar sådana överlappande kontrollstrukturer och signalerar ett kompileringsfel.