cmp-online.de
Startseite
Neu...
Yamaha XT600Z
Meine Tenere
XT-Technik
VB/VBA-Grundlagen
Grundelemente
Prozeduren
Operatoren
Variablen
Methoden
Schleifen
Vordefinierte Funktionen
Excel-Objekte
Impressum
private homepage von christian mario preussler
Schleifen und Verzweigungen

Verzweigungen

Verzweigungen 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-Verzweigung

Eine 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 
    'Anweisungen
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 'Anweisungen

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 
'Anweisungen
Else 
'Anweisungen
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 
'Anweisungen
ElseIf (Bedingung2) Then 
'Anweisungen
Else 
'Anweisungen
End If

Select-Case-Verzweigung

Die 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
'Anweisungen
Case Variablenwert2, Variablenwert3 [,...]
'Anweisungen
Case Else
'Anweisungen
End Select

Schleifen

Schleifen 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-Schleife

Um 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
'Anweisungen
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 'Zähler
Dim k As Integer 'Schrittweite
k=2
For i = 0 To 10 Step k
'Anweisungen
For j=10 To 0 Step (k*(-1))
'Anweisungen
Next j
'Anweisungen
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 
'Anweisungen
Next
'Anweisungen 'i hat den Wert 3

While-Wend-Schleife

Eine Schleifenart, die nur noch aus Gründen der Kompatibilität in VBA enthalten ist, ist die While-Wend-Schleife:

While (Bedingung)
'Anweisungen
Wend

Do-Loop-Schleifen

Der 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) 
'Anweisungen
[Exit Do]
'Anweisungen
Loop

Do-Loop-While-Schleife (nicht abweisend), Abfrage nach Schleifendurchlauf

Do
'Anweisungen
[Exit Do]
'Anweisungen
Loop While (Bedingung)

Do-Until-Loop-Schleife (abweisend), Abfrage vor Schleifendurchlauf

Do Until (Bedingung) 
'Anweisungen
[Exit Do]
'Anweisungen
Loop

Do-Loop-Until-Schleife (nicht abweisend), Abfrage nach Schleifendurchlauf

Do
'Anweisungen
[Exit Do]
'Anweisungen
Loop Until (Bedingung)