Microsoft® Visual Basic® Scripting Edition Steuern des Programmablaufs in VBScript |
VBScript-Tutorium Zurück | Weiter
|
Mit den folgenden bedingten Anweisungen und Schleifenanweisungen (auch als Kontrollstrukturen bezeichnet) können Sie VBScript-Code schreiben, der Entscheidungen treffen und Aktionen wiederholen kann.
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.
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 KorrigiereDatum() Dim Datum1 Datum1 = #07-02-95# If Datum1 < Now Then Datum1 = Now End Sub
Sub AlarmiereBenutzer(Wert) If Wert = 0 Then Warnfeld.ForeColor = vbRed Warnfeld.Font.Bold = True Warnfeld.Font.Italic = True End If End SubAusfü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
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:
- Do...Loop: Durchläuft eine Schleife, solange/bis eine Bedingung den Wert True hat
- While...Wend: Durchläuft eine Schleife, solange eine Bedingung den Wert True hat
- For...Next: Verwendet einen Zähler, um die Anweisungen so oft zu wiederholen, wie durch den Zähler angegeben
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
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
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
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.
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.
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 AufrufProzX50Mal() Dim x For x = 1 To 50 ProzX Next 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 ZweierSumme() Dim j, Summe For j = 2 To 10 Step 2 Summe = Summe + j 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.Sub NeueSumme() Dim Zahl1, Summe For Zahl1 = 16 To 2 Step -2 Summe = Summe + Zahl1 Next MsgBox "Die Summe ist " & Summe End Sub