2.12 Wiederholungsstrukturen (“Schleifen”)
Soll ein Programmteil mehrmals durchgeführt werden, so verwendet man sogenannte “Schleifen”, die eine wiederholte Durchführung automatisch gestatten:
1. FOR – NEXT und FOR EACH – NEXT: “Zählschleife“
Die Anzahl der Wiederholungen muß bekannt sein.
Beispiel 1
For I = 1 to 5 Print “ Test “ + Str$(I) Next I
Ergebnis:
Test 1 Test 2 Test 3 Test 4 Test 5
Beispiel 2
For I = 5 to 1 Step -1 Print “ Test “ + Str$(I) Next I
Ergebnis:
Test 5 Test 4 Test 3 Test 2 Test 1
Ein “Verwandter“ der For-Next-Schleife ist die For Each-Next-Schleife. Diese eignet sich besonders für die Abarbeitung einer Objektsammlung:
Gefunden = False ‘ Variable For Each MyObject In MyCollection ‘ Jedes Objekt in MyCollection wird ’ überprüft. If MyObject.Text = “Hallo“ Then ‘ Falls Text gleich “Hallo“. Gefunden = True ‘ Setze Variable Gefunden auf True. Exit For ‘ Ausstieg aus der Schleife. End If Next
2. DO – LOOP UNTIL: “Schwanzgesteuerte Schleife“ (Abbruchbedingung am Ende)
Private Sub Form_Click () Dim Antwort As String Dim Msg As String ‘ Variablen deklarieren. Msg = “Bitte eine Zahl zwischen“ Msg = Msg + “1 und 9 eingeben!“ Do Antwort = InputBox(Msg) Loop Until Antwort 1 And Antwort 9 End Sub
Do – Loop ist die strukturierteste Art, Schleifen zu programmieren. Schleifen eignen sich hervorragend zum Abfangen von Eingabefehlern, wie folgendes Beispiel zeigt:
Sub Uprog () Dim A As Integer Dim Eingabe As String Dim Msg As String, ErrMsg As String Msg = “Geben Sie bitte eine Zahl ein!“ ErrMsg = “Eingabefehler! “ ErrMsg = ErrMsg & “Bitte wiederholen“ ErrMsg = ErrMsg & “Sie die Eingabe“ Do Eingabe = InputBox(Msg) If Not IsNumeric(Eingabe) Then MsgBox ErrMsg, 16, “Fehlermeldung“ End If Loop Until IsNumeric(Eingabe) End Sub
Die Funktion IsNumeric(a) liefert true (wahr), wenn a numerisch (also eine Zahl) ist, ansonsten false (falsch).
3. WHILE – WEND: “Kopfgesteuerte Schleife“ (Abbruchbedingung am Anfang)
While (Bedingung) (Anweisungsblock) Wend
Zur Unterscheidung der Schleifenarten
|
For – Next |
Do – Loop Until |
While – Wend |
Abbruchbedingung |
Durchlaufzahl |
am Ende |
am Anfang |
Mindestdurchläufe |
Anzahl vorgegeben |
1 |
0 |
Maximale Durchlaufzahl |
vorgegeben |
“unbegrenzt“ |
“unbegrenzt“ |