Microsoft® Visual Basic® Scripting Edition
Schleifendurchlauf durch Code
VBScript-Tutorium 
 Zurück |Weiter


Verwenden von Schleifen zum Wiederholen von Code
Das Durchlaufen von Schleifen ermöglicht Ihnen, eine Anweisungsgruppe wiederholt auszuführen. Einige Schleifen wiederholen Anweisungen, bis eine Bedingung falsch (False) wird, andere wiederholen Anweisungen, bis eine Bedingung wahr (True) wird. Es gibt auch Schleifen, die Anweisungen in einer bestimmten Anzahl wiederholen.

Die folgenden Schleifenanweisungen sind in VBScript verfügbar:

Verwenden von Do-Schleifen
Sie können Do...Loop-Anweisungen verwenden, um einen Anweisungblock mehrmals auszuführen, ohne daß die Anzahl der Durchläufe festgelegt ist. Die Anweisungen werden entweder wiederholt, solange eine Bedingung True ist oder bis eine Bedingung True wird.
Wiederholung von Anweisungen, während eine Bedingung True ist
Verwenden Sie das Schlüsselwort While, um eine Bedingung in einer Do...Loop-Anweisung zu überprüfen. Sie können die Bedingung überprüfen, bevor die Schleife ausgeführt wird (wie im folgenden Beispiel ChkFirstWhile gezeigt), oder Sie können sie überprüfen, nachdem die Schleife mindestens einmal ausgeführt wurde (wie im Beispiel ChkLastWhile gezeigt). Wenn in der ChkFirstWhile-Prozedur myNum auf 9 anstatt auf 20 festgelegt wird, werden die Anweisungen in der Schleife niemals ausgeführt. In der ChkLastWhile-Prozedur werden die Anweisungen in der Schleife nur einmal ausgeführt, weil die Bedingung bereits False ist.


 Sub ChkFirstWhile()
     Dim counter, myNum
     counter = 0
     myNum = 20
     Do While myNum > 10
         myNum = myNum - 1
         counter = counter + 1
     Loop
     MsgBox "Die Schleife wurde " & counter & " mal wiederholt."
 End Sub

 Sub ChkLastWhile()
     Dim counter, myNum
     counter = 0
     myNum = 9
     Do
         myNum = myNum - 1
         counter = counter + 1
     Loop While myNum > 10
     MsgBox "Die Schleife wurde " & counter & " mal wiederholt."
 End Sub

Wiederholen einer Anweisung, bis eine Bedingung True wird
Sie können das Schlüsselwort Until auf zwei Arten verwenden, um eine Bedingung in einer Do...Loop-Anweisung zu überprüfen. Sie können die Bedingung überprüfen, bevor die Schleife ausgeführt wird (wie im folgenden Beispiel ChkFirstUntil gezeigt), oder Sie können sie überprüfen, nachdem die Schleife mindestens einmal ausgeführt wurde (wie im Beispiel ChkLastUntil gezeigt). Solange die Bedingung False ist, wird die Schleife durchlaufen.


 Sub ChkFirstUntil()
     Dim counter, myNum
     counter = 0
     myNum = 20
     Do Until myNum = 10
         myNum = myNum - 1
         counter = counter + 1
     Loop
     MsgBox "Die Schleife wurde " & counter & " mal wiederholt."
 End Sub

 Sub ChkLastUntil()
     Dim counter, myNum
     counter = 0
     myNum = 1
     Do
         myNum = myNum + 1
         counter = counter + 1
     Loop Until myNum = 10
     MsgBox "Die Schleife wurde " & counter & " mal wiederholt."
 End Sub

Beenden einer Do...Loop-Anweisung aus der Schleife heraus
Sie können eine Do...Loop-Schleife beenden, indem Sie die Exit Do-Anweisung verwenden. Da die Schleifenausführung gewöhnlich nur in bestimmten Situationen beendet werden soll, z.B. um eine Endlosschleife zu vermeiden, sollten Sie die Exit Do-Anweisung im True-Anweisungsblock einer If...Then...Else-Anweisung verwenden. Wenn die Bedingung False ist, wird die Schleife normal ausgeführt.

Im folgenden Beispiel wird myNum ein Wert zugewiesen, der eine Endlosschleife verursacht. Die If...Then...Else Anweisung überprüft, ob dieser Zustand eintritt, und verhindert die endlose Wiederholung.


Sub ExitExample()
     Dim counter, myNum
     counter = 0
     myNum = 9
     Do Until myNum = 10
         myNum = myNum - 1
         counter = counter + 1
         If myNum < 10 Then Exit Do
     Loop
     MsgBox "Die Schleife wurde " & counter & " mal wiederholt."
 End Sub
Verwenden von While...Wend
Die While...Wend-Anweisung wird in VBScript für Entwickler zur Verfügung gestellt, die mit ihrer Verwendung vertraut sind. Aufgrund der eingeschränkten Flexibilität von While...Wend wird jedoch empfohlen, stattdessen Do...Loop zu verwenden.
Verwenden von For...Next
Sie können For...Next-Anweisungen verwenden, um genau festzulegen, wie oft ein Anweisungblock ausgeführt werden soll. Für Schleifen verwenden Sie eine Zählervariable, deren Wert mit jeder Wiederholung der Schleife vergrößert oder verkleinert wird.

Beispielsweise hat die folgende Prozedur zur Folge, daß eine Prozedur mit dem Namen MyProc 50 mal ausgeführt wird. Die For-Anweisung gibt als Zählervariable x an und legt den zugehörigen Start- und Endwert fest. Die Next-Anweisung zählt die Zählervariable jeweils um 1 hoch.

 Sub DoMyProc50Times()
     Dim x
     For x = 1 To 50
         MyProc
     Next
 End Sub

Mit dem Schlüsselwort Step können Sie die Zählervariable um den darin angegebenen Wert vergrößern oder verkleinern. Im folgenden Beispiel wird die Zählervariable j bei jedem Schleifendurchlauf um 2 hochgezählt. Wenn die Schleife beendet ist, enthält total die Summe von 2, 4, 6, 8 und 10.


 Sub TwosTotal()
     Dim j, total
     For j = 2 To 10 Step 2
         total = total + j
     Next
     MsgBox "Die Summe ist " & total
 End Sub


Zum Verkleinern der Zählervariable verwenden Sie einen negativen Wert für Step. Sie müssen einen Endwert angeben, der kleiner als der Startwert ist. Im folgenden Beispiel wird die Zählervariable myNum bei jedem Schleifendurchlauf um 2 verkleinert. Wenn die Schleife beendet ist, enthält total die Summe von 16, 14, 12, 10, 8, 6, 4 und 2.



 Sub NewTotal()
     Dim myNum, total
     For myNum = 16 To 2 Step -2
         total = total + myNum
     Next
     MsgBox "Die Summe ist " & total
 End Sub


Sie können jede For...Next-Anweisung beenden, bevor der Zähler seinen Endwert erreicht, indem Sie die Exit For-Anweisung verwenden. Da gewöhnlich die Schleifenausführung nur in bestimmten Situationen beendet werden soll, z.B. wenn ein Fehler auftritt, sollten Sie die Exit For-Anweisung im True-Anweisungsblock einer If...Then...Else-Anweisung verwenden. Wenn die Bedingung False ist, wird die Schleife normal ausgeführt.

Verwenden von For Each...Next
Eine For Each...Next-Schleife ist einer For...Next -Schleife ähnlich. Anstatt die Anzahl der Schleifendurchläufe zum Wiederholen der Anweisungen anzugeben, wird in einer For Each...Next-Schleife eine Anweisungsgruppe für jedes Element in einer Auflistung von Objekten oder für jedes Element in einem Datenfeld ausgeführt. Dies ist besonders dann hilfreich, wenn nicht bekannt ist, wieviele Elemente in einer Gruppe enthalten sind.

Im folgenden HTML-Codebeispiel wird der Inhalt eines Dictionary-Objekts verwendet, um Text in mehrere Textfelder einzusetzen:



 <HTML>
 <HEAD><TITLE>Formulare und Elemente</TITLE></HEAD>
 <SCRIPT LANGUAGE="VBScript">
 <!--
 Sub cmdChange_OnClick
    Dim d                   'Erstellen einer Variablen
    Set d = CreateObject("Scripting.Dictionary")
    d.Add "0", "Athen"     'Einige Schlüssel und Elemente hinzufügen
    d.Add "1", "Belgrad"
    d.Add "2", "Kairo"

    For Each I in d
        Document.frmForm.Elements(I).Value = D.Item(I)
    Next
 End Sub
 -->
 </SCRIPT>
 <BODY>
 <CENTER>
 <FORM NAME="frmForm"

 <Input Type = "Text"><p>
 <Input Type = "Text"><p>
 <Input Type = "Text"><p>
 <Input Type = "Text"><p>
 <Input Type = "Button" NAME="cmdChange" VALUE="Hierauf klicken"><p>
 </FORM>
 </CENTER>
 </BODY>
 </HTML>



© 1997 Microsoft Corporation. All Rechte vorbehalten. Bestimmungen zur Verwendung