VBA: Select Case

Die bessere If-Funktion

Statt einer komplizierten If-Then-Else-Struktur können Sie Ihre VBA-Programme meistens mit einem übersichtlicheren Select Case schreiben.

Auf dieser Seite

Bisher noch keine Bewertungen für diesen Artikel.

Statt einer komplizierten If-Then-Else-Struktur können Sie Ihre VBA-Programme meistens mit einem übersichtlicheren Select Case schreiben. Lorenz Hölscher zeigt Ihnen, wie Sie Ihren Code damit optimieren.

So ziemlich die erste Struktur, die Sie in einem VBA-Programm eingesetzt haben, dürfte ein If Then Else gewesen sein. Und wahrscheinlich sind Sie auch dabei geblieben. Das ist schade, denn oft geht es besser als mit If(). Wenn Sie so etwas programmieren wie

Function Quartal(datWert As Date) As Integer
	Dim intMonat As Integer
	intMonat = Month(datWert)

	If intMonat = 1 Or IntMonat = 2 Or IntMonat = 3 Then
		Quartal = 1
	ElseIf intMonat = 4 Or IntMonat = 5 Or IntMonat = 6 Then
		Quartal = 2
	ElseIf intMonat = 7 Or IntMonat = 8 Or IntMonat = 9 Then
		Quartal = 3
	ElseIf intMonat = 10 Or IntMonat = 11 Or IntMonat = 12 Then
		Quartal = 4
	End If
End Function

Dann lässt sich das mit einer Select Case-Strukur direkt viel kürzer formulieren:

Function Quartal(datWert As Date) As Integer
	Select Case Month(datWert)
	Case 1, 2, 3:	Quartal = 1
	Case 4 to 6:	Quartal = 2
	Case 7 to 9:	Quartal = 3
	Case Is > 9 And Is <= 12:	Quartal = 4
	Case 13:		MsgBox "Das kann ja wohl nicht sein!"
	Case Else
		MsgBox "Dieser Fall tritt auch nicht ein."
	End Select
End Function

Wie Sie bemerkt haben, darf hinter einem Case wie bei Case 13 ein einzelner Wert stehen. Um ein Or aus der If-Konstruktion abzubilden, dürfen wie bei Case 1, 2, 3 auch mehrere Werte nacheinander durch Komma getrennt stehen.

Wollen Sie weiterlesen?

Als zahlendes Mitglied von akademie.de haben Sie vollen Zugriff auf alle Inhalte und können alle PDF-Dateien, Checklisten, Mustervorlagen und Anwendungen herunterladen und verwenden.

Wollen Sie mehr über die Mitgliedschaft erfahren?

Wenn Sie schon Mitglied sind, loggen Sie sich bitte ein.