Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Select Case => Limits

Select Case => Limits
06.08.2015 14:31:50
Albert
Hallo zusammen,
ich hab in einer For Each-Schleife eine Select Case-Anweisung verbaut.
Mit einem Haltepunkt hab ich nun versucht rauszubekommen, warum
ein Wert in der Schleife nicht angezeigt wird, obwohl der gesuchte Begriff
in der Liste vorkommt und auch die Zeile durchlaufen wird.
Wisst ihr, ob in der Select Case-Anweisung ein Maximum an Cases vorhanden ist
und wenn ja, wie viele "Case" sind erlaubt?
Besten Dank im Voraus für eure Rückmeldung
Gruß
A.

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case => Limits
06.08.2015 14:42:12
EtoPHG
Hallo Albert,
Mir ist kein solches Limit bekannt und wenn du sagst '...obwohl der gesuchte Begriff
in der Liste vorkommt und auch die Zeile durchlaufen wird.
' muss es wohl an deinem Code liegen. Wobei ich mir unter '...warum ein Wert in der Schleife nicht angezeigt wird' nicht sehr viel vorstellen kann. Vielleicht zeigst du uns mal den Code, und sagst uns für welche Werte deine Case-Statement nicht funktioniert und für welchen schon. oder noch besser Beispielmappe!
Gruess Hansueli

Anzeige
AW: Select Case => Limits
06.08.2015 14:46:38
Daniel
HI
wieviele CASE hast du denn in deinem Select?
schon geprüft auf übersehene Leerzeichen und übereinstimmende Gross/Kleinschreibung?
Gruß Daniel

AW: Select Case => Limits
06.08.2015 14:51:21
Albert
Hallo Daniel,
aktuell befinden sich 48 CASE in meinem Quellcode...
Den Begriff hab ich direkt aus der Liste mit 6638 Zeilen entnommen.
Also Copy/Paste-Fehler sollte auch nicht vorgekommen sein.

Anzeige
AW: Select Case => Limits
06.08.2015 14:59:01
Daniel
Hi
also es liegt wahrscheinlich nicht an der Anzahl der Case-Fälle.
da werden auch mehr verarbeitet.
Gruß Daniel

AW: Select Case => Limits
06.08.2015 15:38:06
Michael
Hi Albert,
Du weißt ja, an welcher Stelle Deiner Datei der Code stehenbleibt, etwa an der Zeile 654.
Setze vor die Case doch mal sinngemäß:
if zeile>653 then stop
dann bleibt VB immer in der jeweiligen Zeile stehen und Du kannst mit F8 zeilenweise weiter.
Es wurde ja schon die Vermutung mit Leerzeichen geäußert; vielleicht hängt ja irgendwo hinten eines dran; Du kannst Dir ja die Daten mit
msgbox "Daten 1: >" & daten1 & "<" & vblf & "Daten 2: >" & daten2 & "<"
untereinander ausgeben lassen.
Außerdem war hier kürzlich ein Post mit internationalen Zeichensatz-Problemen, wo "hinter" einigen der sichtbaren Zeichen ein ziemlich übler UDF-Code gesteckt hatte.
Schöne Grüße,
Michael

Anzeige
AW: Select Case => Limits
06.08.2015 15:55:36
Albert
Hallo Michael,
der Tipp mit dem STOP war Gold wert! Danke...
Ich hatte einen Case zweimal im Quellcode und somit hat ein Case den anderen
ausgehebelt!
Anfängerfehler...!
Besten Dank für eure Hilfe
Gruß
A.

gerne
07.08.2015 14:13:17
Michael
Hi Albert,
freut mich, daß Du den Bug gefunden hast.
Ich hab mir gestern schon überlegt, vielleicht noch einen allgemeinen Hinweis anzubringen: so viele CASEs kommen mir irgendwie "komisch" vor.
Ich vermute, daß es darum geht, unterschiedliche Daten (einer umfangreicheren Tabelle bzw. "Datenbank") unterschiedlich weiterzuverarbeiten. Eventuell lassen sich durch eine abstraktere Herangehensweise eine Reihe CASEs einsparen, indem Du in den Daten selbst eine oder mehrere zusätzliche Spalten mit "abstrakten" Kennzeichen vergibst, über die Du dann die entsprechende Vorgehensweise steuerst.
Mir fällt jetzt leider kein griffiges Beispiel ein, aber ich bin mir ziemlich sicher, daß eine Vereinfachung möglich ist.
Der Punkt ist: je mehr Code man schreibt, umso höher ist die Wahrscheinlichkeit, daß man Fehler macht.
Happy Exceling,
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung bei Select Case 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. Code einfügen: Füge deinen Code in ein Modul oder ein Arbeitsblattmodul ein.

  3. Select Case-Anweisung erstellen: Nutze die folgende Struktur für deine Select Case-Anweisung:

    Select Case Variable
       Case Wert1
           ' Aktion für Wert1
       Case Wert2
           ' Aktion für Wert2
       Case Else
           ' Standardaktion
    End Select
  4. Fehler suchen: Wenn ein Wert nicht angezeigt wird:

    • Überprüfe, ob der Wert in der Liste vorkommt.
    • Teste die Eingaben auf Leerzeichen oder Groß-/Kleinschreibung.
  5. Debugging: Setze Haltepunkte (STOP) vor die Case-Anweisungen, um zeilenweise zu prüfen, wo der Code stehen bleibt.


Häufige Fehler und Lösungen

  • Doppelte Cases: Wenn ein Case mehrmals vorhanden ist, wird nur der erste erkannt. Überprüfe deinen Code auf doppelte Case-Anweisungen.
  • Leerzeichen: Unsichtbare Leerzeichen können dazu führen, dass der Vergleich fehlschlägt. Nutze Trim in deinem Code, um diese zu entfernen.
  • Groß-/Kleinschreibung: Select Case ist fallunempfindlich, aber immer sicherstellen, dass die Werte übereinstimmen.
  • Maximale Anzahl von Cases: Es gibt kein festes Limit für die Anzahl an Cases in VBA, aber es ist ratsam, den Code übersichtlich zu halten.

Alternative Methoden

Falls deine Select Case-Anweisung zu komplex wird, kannst du folgende Alternativen in Betracht ziehen:

  • If...Then...Else: Eine flexible Methode, um Bedingungen zu überprüfen.

    If Variable = Wert1 Then
      ' Aktion für Wert1
    ElseIf Variable = Wert2 Then
      ' Aktion für Wert2
    Else
      ' Standardaktion
    End If
  • Dictionary-Objekte: Für eine dynamische Zuordnung von Werten, die einfacher zu verwalten sind, kannst du ein Scripting.Dictionary verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du die Select Case-Anweisung in Excel VBA nutzen kannst:

Sub BeispielSelectCase()
    Dim Farbe As String
    Farbe = "Rot"

    Select Case Farbe
        Case "Rot"
            MsgBox "Die Farbe ist Rot."
        Case "Blau"
            MsgBox "Die Farbe ist Blau."
        Case Else
            MsgBox "Farbe nicht erkannt."
    End Select
End Sub

In diesem Beispiel wird eine Meldung ausgegeben, die je nach Wert von Farbe variiert. Dies zeigt gut die Funktionsweise einer Select Case-Anweisung in VBA.


Tipps für Profis

  • Strukturierte Daten: Halte deine Daten in einer Tabelle, um die Select Case-Anweisung zu vereinfachen.
  • Vermeide zu viele Cases: Wenn du mehr als 10-15 Cases hast, überlege dir eine alternative Struktur, um die Lesbarkeit zu erhöhen.
  • Einfache Fehlerdiagnose: Verwende MsgBox oder Debug.Print, um Variablenwerte während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Wie viele Case-Anweisungen kann ich maximal verwenden?
Es gibt kein festes Limit für Case-Anweisungen in VBA. Achte jedoch darauf, dass der Code übersichtlich bleibt.

2. Was ist der Unterschied zwischen Select Case und If...Then?
Select Case ist effizienter, wenn du viele mögliche Werte überprüfen musst, während If...Then flexibler ist und auch komplexe Bedingungen zulässt.

3. Kann ich Select Case auch für Textvergleiche verwenden?
Ja, Select Case kann auch mit Textvariablen verwendet werden. Achte auf korrekte Groß-/Kleinschreibung und Leerzeichen.

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