Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile inserire istruzioni di controllo all'interno di altre istruzioni di controllo, ad esempio un If...Then...Else
blocco all'interno di un For...Next
ciclo. Un'istruzione di controllo posizionata all'interno di un'altra istruzione di controllo viene considerata annidata.
Livelli di annidamento
Le strutture di controllo in Visual Basic possono essere annidate a tutti i livelli desiderati. È pratica comune rendere le strutture annidate più leggibili impostando il rientro del corpo di ognuno di essi. L'editor IDE (Integrated Development Environment) esegue automaticamente questa operazione.
Nell'esempio seguente la routine sumRows
aggiunge gli elementi positivi di ogni riga della matrice.
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
Nell'esempio precedente la prima Next
istruzione chiude il ciclo interno For
e l'ultima Next
istruzione chiude il ciclo esterno For
.
Analogamente, nelle istruzioni annidate If
, le End If
istruzioni si applicano automaticamente all'istruzione precedente If
più vicina. I cicli annidati Do
funzionano in modo simile, con l'istruzione più interna corrispondente all'istruzione più Loop
Do
interna.
Annotazioni
Per molte strutture di controllo, quando si fa clic su una parola chiave, tutte le parole chiave nella struttura vengono evidenziate. Ad esempio, quando si fa clic su If
in una costruzione If...Then...Else
, vengono evidenziate tutte le istanze di If
, Then
, ElseIf
, Else
, e End If
nella costruzione. Per passare alla parola chiave evidenziata successiva o precedente, premere CTRL+MAIUSC+FRECCIA GIÙ o CTRL+MAIUSC+FRECCIA SU.
Annidamento di diversi tipi di strutture di controllo
È possibile annidare un tipo di struttura di controllo all'interno di un altro tipo. Nell'esempio seguente viene usato un With
blocco all'interno di un For Each
ciclo e blocchi annidati If
all'interno del With
blocco.
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
Strutture di controllo sovrapposte
Non è possibile sovrapporsi alle strutture di controllo. Ciò significa che qualsiasi struttura nidificata deve essere completamente contenuta all'interno della struttura più interna successiva. Ad esempio, la disposizione seguente non è valida perché il For
ciclo termina prima del termine del blocco interno With
.
Il compilatore di Visual Basic rileva strutture di controllo sovrapposte e segnala un errore in fase di compilazione.