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

VBA Select Case in Excel — so funktioniert es & wann statt ElseIf

|

VBA Select Case in Excel — so funktioniert es & wann statt ElseIf

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

Kurz gesagtSelect Case nimmt einen Wert und leitet ihn zu einem Ergebnis. 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

Aber das Snippet ist nicht der Punkt. Die meisten Anleitungen werfen Ihnen zehn Varianten hin und überlassen Ihnen die Frage, wann Select Case die richtige Wahl ist. Hier kommt zuerst das Denkmodell — damit Sie auch Fälle beurteilen können, die niemand gezeigt hat.

Die eine Idee: Select Case ist ein Verteiler, keine Checkliste

If...ElseIf ist eine Checkliste. Sie stellt eine Folge unabhängiger Ja/Nein-Fragen — ist es dies? nein… ist es das? nein… — und jede Frage darf eine andere Variable betreffen.

Select Case ist ein Verteiler. Es nimmt einen Wert, geht die Ausgänge durch und schaltet auf den ersten, der passt. Jeder Case ist ein möglicher Ausgang für denselben Eingang.

Dieser eine Unterschied sagt Ihnen alles:

  • Dieselbe Variable, viele Ergebnisse → Verteiler. Select Case.
  • Verschiedene Variablen, echte unabhängige Fragen → Checkliste. If...ElseIf.

Wenn Sie je ElseIf punkte = 1 … ElseIf punkte = 2 … ElseIf punkte = 3 schreiben, haben Sie einen Verteiler aus Checklisten-Teilen gebaut. Das ist das Signal zum Wechsel.

Die Regel, die jeden Select-Case-Fehler erklärt: Der erste Treffer gewinnt

VBA wertet Ihren Wert einmal aus und probiert dann jeden Case von oben nach unten — und stoppt beim ersten Treffer. Verinnerlichen Sie diese Regel, und der Klassiker unter den Fehlern verliert sein Rätsel:

' FEHLER: Nichts unter 100 erreicht je die zweite Zeile
Select Case punkte
    Case Is < 100:  note = "zu prüfen"
    Case Is < 50:   note = "kritisch"      ' ← toter Code
End Select

Case Is < 100 schluckt bereits alles unter 50, also wird der Ausgang „kritisch" nie erreicht. Die Lösung ist kein neues Schlüsselwort, sondern die Reihenfolge. Den engsten Fall zuerst:

Select Case punkte
    Case Is < 50:   note = "kritisch"
    Case Is < 100:  note = "zu prüfen"
End Select

Fast jede Frage „Mein Select Case macht das Falsche" ist genau diese Regel, die zubeißt. Das Konzept ist die Fehlersuche.

Wie der Verteiler schaltet — vier Arten von Ausgang

Die Vergleichsarten lernt man einmal. Jede ist eine andere Form von Ausgang; alle leben im selben Block.

Genaue Werte und Listen — ein Ausgang, mehrere Beschriftungen:

Select Case land
    Case "Frankreich", "Deutschland", "Italien":  region = "Europa"
    Case "Japan", "Korea", "China":               region = "Asien"
    Case Else:                                     region = "Sonstige"
End Select

Bereiche mit To — das Arbeitspferd 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 Else:          rabatt = 0.1
End Select

Is mit Vergleich — wenn kein Bereich passt (>, <, >=, <=, <>). Is ist Pflicht; ein nacktes Case punkte > 5 kompiliert nicht.

Frei mischen in einem Block — genau diese Flexibilität ist der Grund, warum Select Case dort skaliert, wo ElseIf-Ketten verrotten:

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
End Select

Die Notausfahrt: Select Case True

Das ist der Kniff, der die Kenner vom Rest trennt. Wenn Ihre Bedingungen verschiedene Variablen betreffen, würden Sie normalerweise zu verschachtelten If greifen. Tun Sie es nicht. Setzen Sie den Testausdruck auf True, und jeder Case wird zu einem vollständigen booleschen Ausdruck:

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

Das ist der idiomatische VBA-Weg, Logik über mehrere Variablen flach und lesbar zu halten — die eine Stelle, an der der Verteiler über eine einzelne Variable hinausreicht. Greifen Sie dazu, bevor Sie eine Pyramide aus If bauen.

Wann Sie Select Case NICHT nehmen sollten

Eine ehrliche Einordnung, weil die meisten Anleitungen sie verschweigen:

  • Zwei Ergebnisse? Nehmen Sie If...Else. Ein Select Case mit einem Case und einem Case Else ist Zeremoniell.
  • Eine Bedingung pro Zweig, alle über verschiedene Variablen? Das ist eine Checkliste — If...ElseIf liest sich besser, außer Sie wollen bewusst das Select Case True-Layout.
  • Drei oder mehr Ergebnisse zur selben Variable? Immer Select Case. Wer hier noch ElseIf schreibt, macht der nächsten Person (oft dem eigenen Ich in sechs Monaten) das Leben schwerer als nötig.

Geschwindigkeit ist eine Fußnote — der Testausdruck wird nur einmal ausgewertet — aber wählen Sie Select Case für die Lesbarkeit, nicht für Mikrosekunden.

Häufige Fehler — alles Folgen des Modells

  • Falscher Fall greift / toter Zweig. Wieder der erste Treffer. Vom Engsten zum Weitesten ordnen.
  • Case punkte > 5 kompiliert nicht. Ein nackter Vergleich ist unzulässig; schreiben Sie Case Is > 5.
  • Textvergleich scheitert an Groß-/Kleinschreibung. Select Case unterscheidet sie standardmäßig. Setzen Sie Option Compare Text an den Modulanfang oder normalisieren Sie mit Select Case LCase(land).

Ab einem gewissen Punkt sollte Verzweigungslogik gar nicht mehr von Hand geschrieben werden

Select Case ist das richtige Werkzeug, um einen Wert zu verteilen — aber sobald sich die Regeln selbst ständig ändern (neue Stufen, neue Bänder, neue Sonderfälle), testen und retesten Sie Code bei jeder Änderung. ExcelMaster Agent lässt Sie die Regel formulieren, statt sie zu programmieren — „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

Wann sollte ich Select Case statt If verwenden? Wenn Sie eine Variable zu drei oder mehr Ergebnissen leiten. Bei zwei Ergebnissen oder Bedingungen über verschiedene Variablen liest sich If...ElseIf besser — außer Sie nutzen bewusst das Muster Select Case True.

Kann VBA Select Case einen Wertebereich prüfen? Ja — Case 1 To 10 trifft jeden Wert von 1 bis 10 einschließlich, und Sie können Bereiche, Listen und Is-Vergleiche im selben Block mischen.

Warum greift mein Select Case den falschen Zweig? Der erste Treffer gewinnt. Ein weiter Fall vor einem engen schluckt den engen — vom Engsten zum Weitesten umsortieren.

Ist Select Case schneller als ElseIf? Geringfügig, weil der Wert nur einmal ausgewertet wird. Der eigentliche Gewinn ist Lesbarkeit, nicht Geschwindigkeit.