| VerzweigungenVerzweigungen gehören zu den elementaren Bestandteilen jeder Programmiersprache. In diesem Kapitel sollen die Select-Case-Verzweigung und die If-Then-Verzweigung beschrieben werden. If-Then-VerzweigungEine von zwei Formen der Verzweigung in VBA ist die für nur eine Alternative (einfache Entscheidung) oder wenige Alternativen geeignete If-Then-Struktur. 
Der Programmcode kann beispielsweise lauten: 
If (Bedingung) Then 
End If
 Hierbei wird der Anweisungsteil nur duchgeführt, wenn die Bedingung als Ergebnis "Wahr" ergibt. Die Anweisung kann auch als In-Line-Code programmiert werden; hier wird auf die Angabe des abschließenden Teils End If verzichtet: 
If (Bedingung) Then 
 Bei differierenden Anweisungen, die wahlweise ausgeführt werden, spricht man von echten Alternativen. Ergibt die Bedingung dabei Falsch, wird der Anweisungsteil ausgeführt, der durch das Schlüsselwort Else eingeleitet wird: 
If (Bedingung) Then 
Else 
End If
 Auch diese Verzweigungsart kann In-Line geschrieben werden. Als Trennung zwischen mehreren Anweisungen wird der Doppelpunkt verwendet: 
If (Bedingung) Then [Anweisung1: Anweisung2] [Else Anweis1: Anweis2]
 Auch sind in VBA Entscheidungen möglich, die abhängig von mehr als einer Bedingung ausgeführt werden sollen. In der Verzweigungsstruktur wird dazu das Wort ElseIf verwendet:
 
If (Bedingung1) Then 
ElseIf (Bedingung2) Then 
Else 
End If
 Select-Case-VerzweigungDie zweite Art von Verzweigung in VBA ist die Select-Case-Struktur. Sie ist übersichtlicher als die If-Then-Verzweigung, wenn eine größere Zahl von alternativen Möglichkeiten zu unterscheiden sind. Dabei wird jedoch nicht, wie in der vorangegangenen Verzweigung, eine Bedingung auf ihren Wahrheitswert überprüft, sondern es werden explizit Werte mit einer aus dem Programmcode gegebenen Variablen verglichen:
 
Select Case Variable
Case Variablenwert1
Case Variablenwert2, Variablenwert3 [,...]
Case Else
End Select
 SchleifenSchleifen sind eine weitere, in jeder Programmiersprache genutzte Strukturform. Zu Beachten ist, daß die While-Wend-Schleife, welche eigentlich überflüssig ist, nur der Vollständigkeit halber hier erwähnt wird. For-Next-SchleifeUm eine einzelne oder mehrere Anweisungen für eine vorgegebene Anzahl von Durchläufen auszuführen, eignet sich die For-Next-Scheife. Sie ist vergleichbar mit der Struktur For(...) der Sprache C/C++: 
For i = Anfang To Ende
Next
 Zusätzlich kann eine Schrittweite angegeben werden, die von +1 abweicht, sowie hinter dem Next-Schlüssel die Zählvariable, wodurch auch verschachtelte Strukturen möglich werden:
 
Dim i As Integer, j As Integer Dim k As Integer k=2
For i = 0 To 10 Step k
For j=10 To 0 Step (k*(-1))
Next j
Next i
 Wichtig zu erwähnen ist auch, daß das Herausspringen aus einer For-Next-Schleife, abhängig von einer Bedingung, durch den Zusatz Exit For möglich ist: 
If Bedingung Then Exit For
 Eine Besonderheit: Die For-Next-Schleife bricht nach ununterbrochenen Durchlauf erst ab, wenn die Zählvariable das erste Mal die Abbruchbedingung über-, bzw., bei negativen Schrittweiten, unterschritten hat.
Wenn der Zähler als Grundlage für weitere Programmanweisungen dienen soll (zum Beispiel bei der Überprüfung, ob die Schleife vorzeitig durch Exit For verlassen wurde), muß also bedacht werden, daß im Höchstfalle der Zähler um eine Schrittweite über (bzw. unter) dem Endwert liegt. Beispiel: 
For i = 0 To 2 
Next
 While-Wend-SchleifeEine Schleifenart, die nur noch aus Gründen der Kompatibilität in VBA enthalten ist, ist die While-Wend-Schleife:
 
While (Bedingung)
Wend
 Do-Loop-SchleifenDer Nachteil bei der While-Wend-Schleife ist, daß keine Möglichkeit besteht, abhängig von einer Bedingung die Schleife vorzeitig zu verlassen.
Diesen Nachteil hat die Do-Loop-Schleife nicht, hier ist ein Herausspringen mit Exit Do möglich. 
Die Do-Loop-Schleife kann als Abweisende und als nicht abweisende Schleife verwendet werden. Desweiteren kann die Abfrage, ob die Bedingung für einen Schleifenlauf besteht, vor dem Durchlauf oder nach einem Durchlauf, also vor dem nächsten, durchgeführt werden. Es stehen also vier mögliche Arten dieser Struktur zur Verfügung.
 Do-While-Loop-Schleife (abweisend), Abfrage vor Schleifendurchlauf
Do While (Bedingung) 
[Exit Do]
Loop
 Do-Loop-While-Schleife (nicht abweisend), Abfrage nach Schleifendurchlauf
Do
[Exit Do]
Loop While (Bedingung)
 Do-Until-Loop-Schleife (abweisend), Abfrage vor Schleifendurchlauf
Do Until (Bedingung) 
[Exit Do]
Loop
 Do-Loop-Until-Schleife (nicht abweisend), Abfrage nach Schleifendurchlauf
Do
[Exit Do]
Loop Until (Bedingung)
 
 
 
 
 
 
 
 |