Getestet mit: Excel 365 v2509 · Excel 2021 · Excel 2019 · zuletzt geprüft am 05.06.2026
Kurz gesagt — Select Case prüft eine Variable gegen viele mögliche Werte — sauberer als ein Stapel ElseIf. Kopieren und anpassen:
Sub NoteBerechnen()
Dim punkte As Long
punkte = Range("A1").Value
Select Case punkte
Case Is >= 90: Range("B1").Value = "Sehr gut"
Case 75 To 89: Range("B1").Value = "Gut"
Case 60 To 74: Range("B1").Value = "Befriedigend"
Case Else: Range("B1").Value = "Nicht bestanden"
End Select
End Sub
Sehen Sie, wie viel lesbarer das ist als vier ElseIf-Zeilen? Diese Anleitung deckt jede Vergleichsart ab: genaue Werte, Listen, Bereiche, Vergleiche und den Kniff Select Case True.
Warum Select Case eine Wand aus ElseIf schlägt
Wenn Sie dieselbe Variable gegen mehrere Werte prüfen, wird ElseIf schnell unübersichtlich. Select Case nennt den Variablennamen einmal, reiht die Optionen auf und stoppt beim ersten Treffer — lesbarer, leichter erweiterbar und etwas schneller.
So funktioniert es
VBA wertet den Testausdruck einmal aus und prüft dann jeden Case von oben nach unten. Der erste Treffer gewinnt — die restlichen Fälle werden übersprungen. Case Else fängt alles ab, was nicht zutrifft (immer ans Ende).
Beispiel 1 — Genaue Werte und kommagetrennte Listen
Ein einzelner Case kann mehrere durch Komma getrennte Werte enthalten:
Sub LandEinordnen()
Dim land As String
land = Range("A2").Value
Select Case land
Case "Frankreich", "Deutschland", "Italien", "Spanien"
Range("B2").Value = "Europa"
Case "Japan", "Korea", "China"
Range("B2").Value = "Asien"
Case Else
Range("B2").Value = "Sonstige"
End Select
End Sub
Beispiel 2 — Zahlenbereiche mit To
To deckt einen einschließenden Bereich ab — ideal für Stufen und Bänder:
Select Case bestellwert
Case 0 To 99.99: rabatt = 0
Case 100 To 499.99: rabatt = 0.05
Case 500 To 999.99: rabatt = 0.1
Case Else: rabatt = 0.15
End Select
Beispiel 3 — Is mit Vergleichsoperatoren
Wenn ein Bereich nicht passt, erlaubt Is die Operatoren >, <, >=, <=, <>:
Select Case temperatur
Case Is < 0: status = "Frost"
Case Is <= 15: status = "Kalt"
Case Is <= 25: status = "Mild"
Case Else: status = "Heiß"
End Select
Die Reihenfolge zählt: Weil der erste Treffer gewinnt, listen Sie Ihre Fälle von der engsten Grenze aufwärts.
Beispiel 4 — Listen, Bereiche und Is in einem Block mischen
Select Case punkte
Case 0, 1, 2: bewertung = "Schlecht" ' eine Liste
Case 3 To 6: bewertung = "Mittel" ' ein Bereich
Case Is >= 7: bewertung = "Gut" ' ein Vergleich
Case Else: bewertung = "Ohne Wertung"
End Select
Alle drei Vergleichsarten lassen sich frei kombinieren. Genau diese Flexibilität ist der Grund, warum Select Case dort skaliert, wo ElseIf-Ketten unlesbar werden.
Beispiel 5 — Der Trick Select Case True
Sie wollen Bedingungen über verschiedene Variablen prüfen, aber das saubere Case-Layout behalten? Setzen Sie den Testausdruck auf True:
Select Case True
Case alter < 18 And hatBegleitung: tarif = "Kind"
Case alter >= 65: tarif = "Senior"
Case istStudent And alter < 26: tarif = "Student"
Case Else: tarif = "Erwachsen"
End Select
Jeder Case ist nun ein vollständiger boolescher Ausdruck. Das ist der idiomatische VBA-Weg, Logik über mehrere Variablen lesbar zu halten — die eine Stelle, an der Select Case über eine einzelne Variable hinausreicht.
Beispiel 6 — Case Else als Sicherheitsnetz
Nehmen Sie immer Case Else auf, und sei es nur, um Überraschungen abzufangen:
Select Case Weekday(Date)
Case vbMonday To vbFriday: MsgBox "Werktag"
Case vbSaturday, vbSunday: MsgBox "Wochenende"
Case Else: MsgBox "Unerwarteter Datumswert" ' sollte nie eintreten
End Select
Ein Case Else, das „nie laufen sollte", ist die Art, wie Sie unerwartete Daten abfangen, statt still nichts zu tun.
Select Case gegen If/ElseIf — was wann?
| Situation | Verwenden |
|---|---|
| Eine Variable gegen 3+ Werte testen | Select Case |
| Wertebereiche (1–10, 11–20…) | Select Case ... To |
| Bedingungen über verschiedene Variablen | If...ElseIf oder Select Case True |
| Nur ein oder zwei Ergebnisse | If...Else |
Faustregel: gleiche Variable, viele Ergebnisse → Select Case. Verschiedene Variablen, wenige Ergebnisse → If.
Häufige Fehler (und die Lösung)
Zwei Fälle überlappen, der falsche greift — Denken Sie daran: Der erste Treffer gewinnt. Case Is < 100 vor Case Is < 50 bedeutet, dass Werte unter 50 den zweiten Fall nie erreichen. Vom Speziellen zum Allgemeinen ordnen.
Case x > 5 tut nichts — Ein nackter Vergleich ist nicht erlaubt; schreiben Sie Case Is > 5. Das Schlüsselwort Is ist beim Vergleichen Pflicht.
Textvergleich scheitert an der Groß-/Kleinschreibung — Select Case unterscheidet standardmäßig Groß-/Kleinschreibung. Setzen Sie Option Compare Text an den Modulanfang oder normalisieren Sie mit Select Case LCase(land).
Schluss mit handgepflegter Verzweigungslogik
Select Case ist sauberer als ElseIf, aber es bleibt Code, den Sie bei jeder Regeländerung testen, debuggen und aktualisieren müssen. ExcelMaster Agent macht die Regel selbst zur Oberfläche — „staffle Spalte A: unter 100 = kein Rabatt, 100–499 = 5 %, ab 500 = 10 %" — und erzeugt die Logik samt Bereichen und Sonderfällen. Kostenlos testen →
Weitere Anleitungen
- VBA If Then Else — 6 Praxisbeispiele
- VBA For-Schleife in Excel — 8 Praxisbeispiele
- VBA While-Schleife — While, Do While & Do Until erklärt
FAQ
Kann VBA Select Case einen Wertebereich prüfen?
Ja — Case 1 To 10 trifft jeden Wert von 1 bis 10 einschließlich. Sie können Bereiche, Listen und Is-Vergleiche im selben Block kombinieren.
Wie prüfe ich mehrere Werte in einem Case?
Trennen Sie sie mit Komma: Case "A", "B", "C" trifft jeden der drei. Bereiche und Vergleiche dürfen mit in die Liste: Case 1, 2, 5 To 9.
Wann sollte ich Select Case statt If verwenden?
Wenn Sie dieselbe Variable gegen drei oder mehr Werte testen. Bei ein bis zwei Ergebnissen oder Bedingungen über verschiedene Variablen ist If...ElseIf ausreichend.
Ist VBA Select Case schneller als ElseIf? Geringfügig, weil der Testausdruck nur einmal ausgewertet wird. Der größere Gewinn ist Lesbarkeit und Wartbarkeit, nicht die reine Geschwindigkeit.
