Case-Statements in VBA

Je nach Komplexität Deines Makro-Vorhabens kommen diverse Konditionen zur Geltung. Populär ist die Verwendung von IF-Statements (Wenn-Dann) - oder gar "If-Then-Else" (Wenn-Dann-Sonst). In einem früheren Beitrag (If-Statement mit Platzhalter & Like-Operator (VBA)) wurde ein konkretes Beispiel mit dem weiteren Einsatz von "ElseIf" dargestellt. Sind jedoch mehrere Konditionen oder Fälle bereits im Vorfeld bekannt, kannst Du anstelle dessen eine (bessere) Alternative mit "Case-Statements" (Case = Fall) erarbeiten. In anderen Programmiersprachen wird auch von "Switch" gesprochen.

Hast Du beispielsweise 4 Quartale, in denen unterschiedliche Prozeduren zur Anwendung kommen, verwende alternativ einmal ein "Case-Statement", welches wie folgt aufgebaut ist:

Sub CaseStatement()

Dim str_AktuellesQuartal As String

str_AktuellesQuartal = "Q4"

Select Case str_AktuellesQuartal
Case "Q1"
'Code für Q1...
MsgBox ("Du befindest Dich im ersten Quartal.")

Case "Q2"
'Code für Q2...
MsgBox ("Du befindest Dich im zweiten Quartal.")

Case "Q3"
'Code für Q3...
MsgBox ("Du befindest Dich im dritten Quartal.")

Case "Q4"
'Code für Q4...
MsgBox ("Du befindest Dich im vierten Quartal.")
End Select

End Sub

Der Variableninhalt "str_AktuellesQuartal" steuert also, welcher Teil-Bereich Deines Makros ausgeführt werden soll. Falls der Inhalt auf keinen der definierten Cases zutritt, wird die Verarbeitung nach dem "Select-Statement" weitergeführt. Um diese unerwartete Eingabe-Werte aufzufangen (Ausnahme-Handling), kannst Du zudem "Case Else" einfügen und dort Deine Arbeitsschritte hinterlegen, beispielsweise "MsgBox ("Unerwarteter Eingabe-Wert verwendet!")".

Arbeiten mit numerischen Werten

Wir können anstelle von Text auch Zahlen und Zahlenbereiche angeben. Hier ist ein Beispiel mit Zahlen zwischen 1 bis 20 sowie dem "Case Else", welcher uns über unerwartete Zahlen und Eingaben informiert.

Sub CaseStatementNumeric()

Dim int_MeineZahl As Integer

int_MeineZahl = 10

Select Case int_MeineZahl
Case 1 To 2
MsgBox ("Zahl zwischen 1 und 2")

Case 3 To 9
MsgBox ("Zahl zwischen 3 und 9")

Case 10 To 20
MsgBox ("Zahl zwischen 10 und 20")

Case Else
MsgBox ("Unerwartete Zahl/Wert eingegeben")
End Select

End Sub