🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Select Case in Excel — 6 Beispiele (Bereiche, Is, mehrere Werte)

|

VBA Select Case in Excel — 6 Beispiele (Bereiche, Is, mehrere Werte)

Getestet mit: Excel 365 v2509 · Excel 2021 · Excel 2019 · zuletzt geprüft am 05.06.2026

Kurz gesagtSelect 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ß-/KleinschreibungSelect 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

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.