Considerate questo codice:

Dim i, j, k As Int32
Dim rnd As New Random(DateTime.Now.Millisecond)
For i = 0 To 5
 j = 0
 While (j < 3)
   j += 1
   k = 0
   Do
    k += 1
    If (rnd.Next(100) >= 90) Then Continue
For
   Loop Until k > j
 End
While
System.Diagnostics.Debug.WriteLine(String
.Format("{0} {1} {2}", i, j, k))
Next

Che fa di bello? nulla! altro non sono che un For, un While e un Do innestati tra loro con una particolarità: In caso il valore random generato da rnd sia maggiore di 90 deve reiniziare con l'iterazione successiva del ciclo For.
Grazie alla nuova keyword Continue presente in VB 2005 come potete vedere questo è immediato (e sopratutto elegante) evitando la presenza di flags e sopratutto del 'famigerato' goto.
Notate che a differenza di C# (che già include la keyword continue) è possibile decidere con quale blocco proseguire l'iterazione:
Continue {Do,While,For}