Microsoft® Visual Basic® Scripting Edition
Steuern des Programmablaufs in VBScript
VBScript-Tutorium
Zurück | Weiter

 

Steuern der Programmausführung
Mit den folgenden bedingten Anweisungen und Schleifenanweisungen (auch als Kontrollstrukturen bezeichnet) können Sie VBScript-Code schreiben, der Entscheidungen treffen und Aktionen wiederholen kann.

Treffen von Entscheidungen mit If...Then...Else
Die If...Then...Else-Anweisung wird verwendet, um zu überprüfen, ob eine Bedingung den Wert True oder False hat, um abhängig davon eine oder mehrere Anweisungen auszuführen. Normalerweise ist die Bedingung ein Ausdruck mit einem Vergleichsoperator zum Vergleich von zwei Variablen oder Werten. Informationen über Vergleichsoperatoren findem Sie unter Vergleichsoperatoren. If...Then...Else-Anweisungen können in beliebiger Tiefe verschachtelt werden.

Ausführen von Anweisungen, wenn eine Bedingung den Wert "True" hat
Wenn Sie für den Fall, daß die Bedingung den Wert True hat, nur eine Anweisung ausführen müssen, können Sie die einzeilige Syntax der If...Then...Else-Anweisung verwenden. Das folgende Beispiel zeigt die einzeilige Syntax. Beachten Sie, daß in diesem Beispiel das Schlüsselwort Else ausgelassen wird.


 Sub KorrigiereDatum()
     Dim Datum1
     Datum1 = #07-02-95#
     If Datum1 < Now Then Datum1 = Now
 End Sub

Wenn Sie mehrere Zeilen ausführen möchten, müssen Sie die mehrzeilige Syntax verwenden. Diese enthält eine End If-Anweisung, wie in folgendem Beispiel gezeigt:


 Sub AlarmiereBenutzer(Wert)
     If Wert = 0 Then
         Warnfeld.ForeColor = vbRed
         Warnfeld.Font.Bold = True
         Warnfeld.Font.Italic = True
     End If
 End Sub

Ausführen bestimmter Anweisungen, wenn eine Bedingung den Wert "True" hat, und anderer Anweisungen, wenn sie den Wert "False" hat
Sie können die If...Then...Else-Anweisung verwenden, um zwei Blöcke von ausführbaren Anweisungen zu definieren: einen Block, der ausgeführt wird, wenn die Bedingung den Wert True hat, und einen Block, der ausgeführt wird, wenn die Bedingung den Wert False hat.


 Sub AlarmiereBenutzer(Wert)
     If Wert = 0 Then
         Warnfeld.ForeColor = vbRed
         Warnfeld.Font.Bold = True
         Warnfeld.Font.Italic = True
     Else
         Warnfeld.Forecolor = vbBlack
         Warnfeld.Font.Bold = False
         Warnfeld.Font.Italic = False
     End If
 End Sub

Verwenden von Schleifen zum Wiederholen von Code
Schleifen ermöglichen Ihnen die wiederholte Ausführung einer Gruppe von Anweisungen. Manche Schleifen wiederholen Anweisungen so lange, bis eine Bedingung den Wert False erhält. Andere Schleifen wiederholen Anweisungen so lange, bis eine Bedingung den Wert True erhält. Es gibt auch Schleifen, die Anweisungen genau so oft wiederholen, wie durch eine Zahl angegeben.

In VBScript sind folgende Schleifenanweisungen verfügbar:

Verwenden von Do-Schleifen
Sie können Do...Loop-Anweisungen verwenden, um einen Anweisungsblock unbegrenzt zu wiederholen. Die Anweisungen werden wiederholt, solange eine Bedingung den Wert True hat oder bis eine Bedingung den Wert True erhält.

Wiederholen von Anweisungen, solange eine Bedingung den Wert "True" hat
Mit dem Schlüsselwort While können Sie in einer Do...Loop-Anweisung eine Bedingung überprüfen. Sie können die Bedingung vor Eintritt in die Schleife überprüfen (wie im ersten Beispiel des nachfolgenden Abschnitts gezeigt), oder Sie können die Bedingung überprüfen, nachdem die Schleife mindestens einmal durchlaufen wurde (wie im zweiten Beispiel gezeigt). Wenn die Variable Zahl1 in der Prozedur PruefeErstesWhile auf 9 statt auf 20 gesetzt wird, werden die Anweisungen innerhalb der Schleife nie ausgeführt. In der Prozedur PruefeLetztesWhile werden die Anweisungen innerhalb der Schleife nur einmal ausgeführt, weil die Bedingung bereits den Wert False hat.


 Sub PruefeErstesWhile()
     Dim Zähler, Zahl1
     Zähler = 0
     Zahl1 = 20
     Do While Zahl1 > 10
         Zahl1 = Zahl1 - 1
         Zähler = Zähler + 1
     Loop
     MsgBox "Die Schleife wurde " & Zähler & " mal durchlaufen."
 End Sub

 Sub PruefeLetztesWhile()
     Dim Zähler, Zahl1
     Zähler = 0
     Zahl1 = 9
     Do
         Zahl1 = Zahl1 - 1
         Zähler = Zähler + 1
     Loop While Zahl1 > 10
     MsgBox "Die Schleife wurde " & Zähler & " mal durchlaufen."
 End Sub

Wiederholen einer Anweisung, bis eine Bedingung den Wert "True" erhält
Mit dem Schlüsselwort Until können Sie in einer Do...Loop-Anweisung eine Bedingung auf zwei Arten überprüfen. Sie können die Bedingung vor Eintritt in die Schleife überprüfen (wie im ersten Beispiel des nachfolgenden Abschnitts gezeigt), oder Sie können die Bedingung überprüfen, nachdem die Schleife mindestens einmal durchlaufen wurde (wie im zweiten Beispiel gezeigt). Die Schleife wird durchlaufen, solange die Bedingung den Wert False hat.


 Sub PruefeErstesUntil()
     Dim Zähler, Zahl1
     Zähler = 0
     Zahl1 = 20
     Do Until Zahl1 = 10
         Zahl1 = Zahl1 - 1
         Zähler = Zähler + 1
     Loop
     MsgBox "Die Schleife wurde " & Zähler & " mal durchlaufen."
 End Sub

 Sub ChkLastUntil()
     Dim Zähler, Zahl1
     Zähler = 0
     Zahl1 = 1
     Do
         Zahl1 = Zahl1 + 1
         Zähler = Zähler + 1
     Loop Until Zahl1 = 10
     MsgBox "Die Schleife wurde " & Zähler & " mal durchlaufen."
 End Sub

Beenden einer Do ... Loop-Anweisung aus der Schleife heraus
Mit der Exit Do-Anweisung können Sie Do ... Loop beenden. Normalerweise verwendet man die Exit Do-Anweisung nur in bestimmten Situationen, z.B. zur Vermeidung von Endlosschleifen. Deshalb sollten Sie die Exit Do-Anweisung im True-Anweisungsblock einer If...Then...Else-Anweisung einsetzen. Falls die Bedingung den Wert False hat, wird die Schleife normal weiter durchlaufen.

Im folgenden Beispiel wird der Variablen Zahl1 ein Wert zugewiesen, der eine Endlosschleife verursacht. Die If...Then...Else-Anweisung prüft diese Bedingung, um die endlose Wiederholung zu vermeiden.


 Sub ExitBeispiel()
     Dim Zähler, Zahl1
     Zähler = 0
     Zahl1 = 9
     Do Until Zahl1 = 10
         Zahl1 = Zahl1 - 1
         Zähler = Zähler + 1
         If Zahl1 < 10 Then Exit Do
     Loop
     MsgBox "Die Schleife wurde " & Zähler & " mal durchlaufen."
 End Sub

Verwenden von "While ... Wend"
Für diejenigen, die mit der Verwendung der While ... Wend-Anweisung vertraut sind, steht diese auch in VBScript zur Verfügung. Es wird jedoch empfohlen, stattdessen die Do ... Loop-Anweisung einzusetzen, da die While ... Wend-Anweisung weniger flexibel ist.
Verwenden von "For ... Next"
Mit For...Next-Anweisungen können Sie einen Block von Anweisungen so oft wie angegeben wiederholen. Verwenden Sie für Schleifen eine Zählervariable, deren Wert bei jedem Schleifendurchlauf erhöht oder verringert wird.

Die folgende Prozedur veranlaßt beispielsweise die 50malige Ausführung der Prozedur ProzX. Die For-Anweisung legt die Variable x und deren Start- und Endwerte fest. Die Next-Anweisung erhöht den Wert der Zählervariablen jeweils um 1.


 Sub AufrufProzX50Mal()
     Dim x
     For x = 1 To 50
         ProzX
     Next
 End Sub

Mit dem Schlüsselwort Step können Sie den Wert der Zählervariablen um einen angegebenen Wert erhöhen oder verringern. Im folgenden Beispiel wird der Wert der Zählervariablen j bei jedem Schleifendurchlauf um 2 erhöht. Nach Beendigung der Schleife enthält die Variable Summe die Summe der Zahlen 2, 4, 6, 8 und 10.


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

Um den Wert der Zählervariablen zu verringern, verwenden Sie einen negativen Wert für Step. Dabei müssen Sie einen Endwert angeben, der kleiner ist als der Startwert. Im folgenden Beispiel wird der Wert der Zählervariablen Zahl1 bei jedem Schleifendurchlauf um 2 verringert. Nach Beendigung der Schleife enthält die Variable Summe die Summe der Zahlen 16, 14, 12, 10, 8, 6, 4 und 2.


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

Mit der Anweisung Exit For können Sie eine For...Next-Anweisung beenden, bevor der Zähler seinen Endwert erreicht hat. Normalerweise beenden Sie eine Schleife nur in bestimmten Situationen, z.B. wenn ein Fehler auftritt. Deshalb sollten Sie die Exit For-Anweisung im True-Anweisungsblock einer If...Then...Else-Anweisung einsetzen. Falls die Bedingung den Wert False hat, wird die Schleife dann normal weiter durchlaufen.


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