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“