Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Select Case <-> If then elseif else

Forumthread: Select Case <-> If then elseif else

Select Case <-> If then elseif else
22.09.2003 16:00:49
Elmar Steigenberger
Hallo, Ihr lieben Helfer und Helferinnen,

langsam klappts ja bei mir ganz gut mit Visual Basic, ich bin ganz zufrieden mit mir. Aber dank Eurer tollen Hilfe kann ich ja eigentlich nur gut werden :))

Eine Grundsatzfrage:

Verstehe ich das richtig, das eine Select Case-Anweisung eleganter und einfacher zu schreiben ist als eine IF THEN ELSEIF ELSE Anweisung?

Hat Select Case irgendwelche Nachteile gegenüber If then else?

Beispiel:

Bisher hab ich so programmiert:

If aZ < 10 Then
Wohnung = 0
ElseIf (aZ >= 10 And aZ <= 14) Then
Wohnung = 1
ElseIf (aZ >= 15 And aZ <= 19) Then
Wohnung = 2
ElseIf aZ >= 20 And aZ <= 24 Then
Wohnung = 3
ElseIf aZ >= 25 And aZ <= 29 Then
Wohnung = 4

...
...
geht bis 110

Ich denke, ich hätte es auch so machen können:

Select Case az

case is < 10
Wohnung = 0
Case 10 to 14
Wohnung = 1
Case 15 to 19
Wohnung = 2
Case 20 to 24
Wohnung = 3
...

Ist das richtig? Die Wohnung kann nicht in dieselbe Zeile wie Case oder?


Vielen Dank fürs Lesen und Antworten!

liebe e-Grüße
Elmar

====================================
Die erstaunliche und absolut umwerfende Wahrheit über den 11.09.01
www.elfterseptember.info
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case <-> If then elseif else
22.09.2003 16:15:10
ChrisL
Hi Elmar

In der Ausführung gibt es eigentlich keinen Unterschied, die Wahl ob Select Case oder If Then ist also nur kosmetisch.

Für den vorliegenden Fall erachte ich Select Case aber als schöner.

Würdest du z.B. eine Zelle in einer Mappe überprüfen anstatt der Variable AZ

If Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") < 10 Then
Wohnung = 0
ElseIf (Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") >= 10 And Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") <= 14) Then
Wohnung = 1
ElseIf (Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") >= 15 And Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") <= 19) Then
Wohnung = 2
ElseIf Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") >= 20 And Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1") <= 24 Then
Wohnung = 3

Da wäre Select Case wohl schöner...

Select Case Worksheets("Mappe1.xls").Worksheets("Tabelle1").Range("A1")

case is < 10
Wohnung = 0
Case 10 to 14
Wohnung = 1
Case 15 to 19
Wohnung = 2
Case 20 to 24
Wohnung = 3


Zugegeben, ein bischen überspitzt, aber ich denke es ist klar was gemeint ist.

Case 20 To 24: Wohnung = 3
müsste eigentlich auch gehen

Gruss
Chris
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Select Case vs. If Then Else in Excel VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".

  3. Code eingeben: Füge den folgenden Code in das Modul ein:

    Sub Beispiel()
       Dim aZ As Integer
       Dim Wohnung As Integer
    
       aZ = 15 ' Beispielwert
    
       ' Using Select Case
       Select Case aZ
           Case Is < 10
               Wohnung = 0
           Case 10 To 14
               Wohnung = 1
           Case 15 To 19
               Wohnung = 2
           Case 20 To 24
               Wohnung = 3
           Case Else
               Wohnung = 4
       End Select
    
       MsgBox "Die Wohnung ist: " & Wohnung
    End Sub
  4. Ausführen: Drücke F5, um das Makro auszuführen und das Ergebnis in einer MessageBox zu sehen.


Häufige Fehler und Lösungen

  • Fehler: "Typenkonflikt"

    • Lösung: Stelle sicher, dass die Variablen korrekt deklariert sind. Verwende Dim zur Deklaration der Variablen, um Datentypen zu definieren.
  • Fehler: "Syntaxfehler"

    • Lösung: Überprüfe die Syntax der Select Case-Anweisung. Achte darauf, dass Case-Bedingungen korrekt formuliert sind.

Alternative Methoden

Anstelle von Select Case kannst du auch die If Then ElseIf Else-Anweisung verwenden. Hier ist ein Beispiel:

If aZ < 10 Then
    Wohnung = 0
ElseIf aZ >= 10 And aZ <= 14 Then
    Wohnung = 1
ElseIf aZ >= 15 And aZ <= 19 Then
    Wohnung = 2
ElseIf aZ >= 20 And aZ <= 24 Then
    Wohnung = 3
Else
    Wohnung = 4
End If

Die Wahl zwischen Select Case und If Then hängt oft vom persönlichen Stil und der Lesbarkeit des Codes ab.


Praktische Beispiele

Hier einige Szenarien, in denen Select Case nützlich ist:

  1. Kategorisierung von Werten: Wenn du Werte in verschiedene Kategorien einteilen möchtest, ist Select Case eine elegante Lösung.

  2. Zahlenbereiche: Ideal für die Überprüfung von Zahlenbereichen, wie im Beispiel von Elmar, in dem Wohnungen je nach Wert von aZ zugewiesen werden.


Tipps für Profis

  • Verwende Case Else: Dies ist nützlich, um einen Standardwert zu setzen, wenn keine der vorherigen Bedingungen zutrifft.
  • Kombiniere Select Case mit Funktionen: Du kannst Select Case auch innerhalb von Funktionen verwenden, um komplexe Logiken zu steuern.
  • Klarheit über Kürze: Manchmal kann eine lange If Then ElseIf-Kette unübersichtlich werden. Überlege, ob Select Case hier die Lesbarkeit verbessert.

FAQ: Häufige Fragen

1. Was ist der Hauptunterschied zwischen Select Case und If Then Else?
Der Hauptunterschied liegt in der Lesbarkeit und der Struktur. Select Case eignet sich besser für die Überprüfung einer einzelnen Variable gegen mehrere Werte oder Bereiche.

2. Kann ich Select Case auch für Strings verwenden?
Ja, Select Case funktioniert sowohl mit Zahlen als auch mit Strings. Du kannst Bedingungen wie Case "Wert1" verwenden.

3. Gibt es Nachteile bei der Verwendung von Select Case?
In der Ausführung gibt es keinen wesentlichen Unterschied zwischen Select Case und If Then Else. Die Wahl hängt oft von der persönlichen Vorliebe und der Lesbarkeit des Codes ab.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige