beraten
programmieren
implementieren
trainieren
Kontrollstrukturen
Allgemein
Kontrollstrukturen (Verzweigungen) werden benötigt, um logische Überprüfungen durchzuführen. Abhängig vom Ergebnis der Überprüfung werden Anweisungen ausgeführt.
Die Überprüfung kann folgende Vergleichsoperatoren verwenden: =, <, <=, >, >=, <>.
Die folgenden Codebeispiele verwenden die Anweisung Debug.Print um in das Ausgabefenster zu schreiben. Blenden Sie das Ausgabefenster im VBA-Editor über den Menübefehl Ansicht - Direktfenster ein.
If-Then-Else
Die If-Anweisung überprüft eine logische Aussage. Ist diese Wahr (True), werden die Anweisungen innerhalb des If-Blocks ausgeführt.
'Ausgabe, wenn zahl < 10
Dim zahl As Integer
zahl = 5
If zahl < 10 Then
Debug.Print "Kleiner als 10"
End If
Beachten Sie, dass bei einem Textvergleich der Text unter Anführungszeichen steht.
'Ausgabe, wenn nachname gleich Mustermann
Dim nachname As String
nachname="Huber"
If nachname = "Mustermann" Then
Debug.Print "Hallo Mustermann!"
End If
Im Else-Zweig schreiben Sie jene Anweisungen, die ausgeführt werden sollen, wenn die Überprüfung den Wert Falsch (False) liefert.
'Unterschiedliche Ausgaben
Dim zahl As Integer
zahl = 5
If zahl < 10 Then
Debug.Print "Kleiner als 10"
Else
Debug.Print "Grösser oder gleich 10"
End If
Wollen Sie mehr als eine logische Aussage überprüfen, folgen auf die erste If-Anweisung weitere ElseIf-Anweisungen.
Sobald eine logische Aussage den Wert Wahr (True) liefert, werden die entsprechenden Anweisungen ausgeführt.Danach springt die Codeausführung zur End If-Anweisung.
'Mehrere Überprüfungen
Dim zahl As Integer
zahl = 5
If zahl < 10 Then
Debug.Print "Kleiner als 10"
ElseIf zahl > 20 Then
Debug.Print "Grösser als 20"
Else
Debug.Print "Zwischen 10 und 20"
End If
Sie können If-Anweisungen auch verschachteln, d. h. die untergeordneten Überprüfungen werden nur durchgeführt, wenn die Hauptprüfung den Wert Wahr (True) liefert.
Im folgenden Beispiel werden die untergeordneten Prüfungen auf die Grösse nur durchgeführt, wenn es sich um eine gerade Zahl handelt.
'Verschachtelung
Dim zahl As Integer
zahl = 20
If zahl Mod 2 = 0 Then
If zahl < 15 Then
Debug.Print "Gerade Zahl kleiner 15"
ElseIf zahl > 20 Then
Debug.Print "Gerade Zahl grösser 20"
Else
Debug.Print "Gerade Zahl zwischen 15 und 20"
End If
Else
Debug.Print "Ungerade Zahl"
End If
Sie können mehrere logische Aussagen mit Und (And) bzw. Oder (Or) verknüpfen.
Verknüpfung mit Und (And): sind alle Aussagen Wahr (True), so ist der gesamte Ausdruck Wahr (True).
'Überprüfung mit Und (And)
Dim zahl As Integer
zahl = 5
If zahl >= 5 And zahl =< 10 Then
Debug.Print "Zwischen 5 und 10"
End If
Verknüpfung mit Oder (Or): ist zumindest eine Aussage Wahr (True), so ist der gesamte Ausdruck Wahr (True).
'Überprüfung mit Oder (Or)
Dim zahl As Integer
zahl = 5
If zahl < 5 Or zahl > 10 Then
Debug.Print "Kleiner 5 oder grösser 10"
End If
Select Case
Soll eine Variable auf eine grosse Anzahl von Werten geprüft werden, wird die If-Anweisung recht aufwändig. Als Alternative bietet sich das Select Case-Statement an. Hierbei wird die Variable auf unterschiedliche Fälle (Cases) "abgeklopft".
Das folgende Beispiel veranschaulicht die Möglichkeiten.
'Überprüfung mit Select Case
Dim zahl As Integer
zahl = 5
Select Case zahl
Case 10
Debug.Print "Zahl gleich 10"
Case 1, 3, 5
Debug.Print "Zahl gleich 1 oder 3 oder 5"
Case 15 To 20
Debug.Print "Zahl zwischen 15 und 20 (inkl. 15 oder 20)"
Case Is > 100
Debug.Print "Zahl grösser 100"
Case Is <> 30
Debug.Print "Zahl ungleich 30"
End Select
Beachten Sie, dass bei Prüfung auf Ungleichheit das Schlüsselwort Is mit angeführt werden muss.
Sobald ein Fall (Case) den Wert Wahr (True) liefert, werden die entsprechenden Anweisungen dieses Falles ausgeführt. Anschliessend springt die Codeausführung zur End Select-Anweisung.
Download Codebeispiele
Die gezeigten Codebeispiele können Sie als xlsm-Datei herunterladen.