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

Forumthread: Case Select enthält Zeichenkette

Case Select enthält Zeichenkette
18.12.2018 09:40:32
Alex
Guten Morgen,
ich habe da ein Problem und benötige mal eure Hilfe.
Ich habe hier ein Schleifen mit Case
For Each rngCell In Range("B8:B200")
Select Case rngCell.Value
Case "Grundplatte"
If Range("G4") = "Lehre" Then 'Wenn als Werkzeugbezeichnung in F4 Lehre eingetragen  _
wurde dann ist die Grundplatte aus Alu
rngCell.Offset(0, 1).Value = "Alu"
ElseIf Not Range("G4") = "Vorserie" Then  'Wenn als Werkzeugbezeichnung nicht  _
Vorserie steht dann ST52 eintragen, bei Vorserie frei lassen
rngCell.Offset(0, 1).Value = "ST52"
rngCell.Offset(0, 2).Value = "brennen"
End If
Case "pos100 Zwischenplatte"
rngCell.Offset(0, 1).Value = "ST52"
rngCell.Offset(0, 2).Value = "brennen"
Case "Leiste"
rngCell.Offset(0, 1).Value = "ST52"
rngCell.Offset(0, 2).Value = "brennen"
Case "Kopfplatte"
rngCell.Offset(0, 1).Value = "ST52"
rngCell.Offset(0, 2).Value = "brennen"
Das läuft wunderbar. Jetzt möchte ich aber die Felder die ausgelesen werden verändern. Da steht also nicht mehr "Grundplatte" oder "Leiste" drin sondern "pos1 Leiste" oder "pos3 Grundplatte". Kann ich das mit minimal Aufwand verändern, das ich prüfe ob nur das Wort "Leiste" oder "Grundplatte" enthalten ist? Die Zahlen sind immer anders und können nicht berücksichtigt werden.
Mein Gedanke war jetzt irgendwie Case "*Grundplatte"
Danke im voraus für die Hilfe.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Case Select enthält Zeichenkette
18.12.2018 09:54:27
mumpel
Hallo!
Schau Dir dazu Like an, siehe VBA-Hilfe oder Google.
Gruß, René
AW: Case Select enthält Zeichenkette
18.12.2018 10:21:14
Alex
Habe dazu gerade die Info gefunden das case und like zusammen nicht funktioniert, ist das richtig?
mit like geht schon
18.12.2018 10:47:31
Daniel
man kann bei CASE auch Berechnungen ausführen und die Abfragelogik im Select Case umkehren:
For Each rngCell In Range("B8:B200")
Select Case True
Case rngCell like "*Grundplatte*"
Case rngCell like "*Zwischenplatte*
Case rngCell like "*Kopfplatte*"
Case else
end Select
Next
alternativ auch mit If THEN ELSEIF ELSEIF ELSE
For Each rngCell In Range("B8:B200")
IF rngCell like "*Grundplatte*" Then
ELSEIF rngCell like "*Zwischenplatte* Then
ELSEIF rngCell like "*Kopfplatte*"
ELSE
END IF
Next

Gruß Daniel
Anzeige
AW: Case Select enthält Zeichenkette
18.12.2018 10:11:26
kocius

Dim rng As String
For Each rngcell In Range("B8:B200")
rng = Mid(Cells(rngcell.Row, 2), InStr(Cells(rngcell.Row, 2), " ") + 1, 99)
Select Case rng
Case "Grundplatte"
If Range("G4") = "Lehre" Then 'Wenn als Werkzeugbezeichnung in F4 Lehre eingetragen  _
_
wurde dann ist die Grundplatte aus Alu
rngcell.Offset(0, 1).Value = "Alu"
ElseIf Not Range("G4") = "Vorserie" Then  'Wenn als Werkzeugbezeichnung nicht _
Vorserie steht dann ST52 eintragen, bei Vorserie frei lassen
rngcell.Offset(0, 1).Value = "ST52"
rngcell.Offset(0, 2).Value = "brennen"
End If
Case "pos100 Zwischenplatte"
rngcell.Offset(0, 1).Value = "ST52"
rngcell.Offset(0, 2).Value = "brennen"
Case "Leiste"
rngcell.Offset(0, 1).Value = "ST52"
rngcell.Offset(0, 2).Value = "brennen"
Case "Kopfplatte"
rngcell.Offset(0, 1).Value = "ST52"
rngcell.Offset(0, 2).Value = "brennen"
End Select
Next

Anzeige
AW: Case Select enthält Zeichenkette
18.12.2018 10:16:25
mumpel
Mit "Like" ist es einfacher, da muss man keine Zeichen zählen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Case Select mit Zeichenkette in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu den Entwicklertools. Wenn die Entwicklertools nicht sichtbar sind, aktiviere sie in den Excel-Optionen.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)" -> Einfügen -> Modul.

  4. Kopiere den folgenden Code in das Modul:

    Sub SelectCaseMitLike()
       Dim rngCell As Range
       For Each rngCell In Range("B8:B200")
           Select Case True
               Case rngCell.Value Like "*Grundplatte*"
                   If Range("G4") = "Lehre" Then
                       rngCell.Offset(0, 1).Value = "Alu"
                   ElseIf Not Range("G4") = "Vorserie" Then
                       rngCell.Offset(0, 1).Value = "ST52"
                   End If
                   rngCell.Offset(0, 2).Value = "brennen"
               Case rngCell.Value Like "*Zwischenplatte*"
                   rngCell.Offset(0, 1).Value = "ST52"
                   rngCell.Offset(0, 2).Value = "brennen"
               Case rngCell.Value Like "*Kopfplatte*"
                   rngCell.Offset(0, 1).Value = "ST52"
                   rngCell.Offset(0, 2).Value = "brennen"
               Case Else
                   ' Fallback für andere Fälle
           End Select
       Next rngCell
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Gehe zu Entwicklertools -> Makros -> wähle SelectCaseMitLike und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: "Typen nicht übereinstimmend"

    • Lösung: Stelle sicher, dass die Zellen im Bereich "B8:B200" Text enthalten. Überprüfe die Zellformate.
  • Fehler: Kein Ergebnis bei der Verwendung von Like

    • Lösung: Überprüfe, ob die Suchbegriffe korrekt sind. Stelle sicher, dass die Wildcards * richtig platziert sind.
  • Problem mit Case und Like

    • Lösung: Verwende die Struktur Select Case True in Kombination mit Like, um auf Teilstrings zu prüfen.

Alternative Methoden

  • Verwendung von If...Then...Else:

    Anstelle von Select Case kannst du auch die If...Then...Else-Struktur verwenden:

    For Each rngCell In Range("B8:B200")
       If rngCell.Value Like "*Grundplatte*" Then
           ' Aktionen für Grundplatte
       ElseIf rngCell.Value Like "*Zwischenplatte*" Then
           ' Aktionen für Zwischenplatte
       ElseIf rngCell.Value Like "*Kopfplatte*" Then
           ' Aktionen für Kopfplatte
       Else
           ' Fallback
       End If
    Next rngCell
  • Excel-Funktion: Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Funktion WENN in Excel verwenden, um ähnliche Logik in den Zellen zu implementieren.


Praktische Beispiele

  1. Beispiel für die Verwendung von Select Case mit Like:

    For Each rngCell In Range("B8:B200")
       Select Case True
           Case rngCell.Value Like "*Leiste*"
               rngCell.Offset(0, 1).Value = "ST52"
           ' Weitere Cases hier...
       End Select
    Next rngCell
  2. Beispiel für das Einfügen von Berechnungen:

    Select Case True
       Case rngCell.Value Like "*Kopfplatte*"
           rngCell.Offset(0, 1).Value = rngCell.Offset(0, 1).Value * 2 ' Beispiel für Berechnung
    End Select

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden.
  • Verwende Fehlerbehandlung mit On Error Resume Next und On Error GoTo 0 für robustere Makros.
  • Kommentiere deinen Code, um die Lesbarkeit zu erhöhen, besonders wenn du komplexe Bedingungen verwendest.

FAQ: Häufige Fragen

1. Kann ich Select Case mit mehreren Bedingungen kombinieren?
Ja, du kannst Case-Bedingungen kombinieren, indem du Select Case und logische Operatoren wie And oder Or verwendest.

2. Wie kann ich die Performance bei großen Datenmengen verbessern?
Verwende Application.ScreenUpdating = False und Application.Calculation = xlCalculationManual zu Beginn deines Makros und setze sie am Ende wieder zurück, um die Performance zu erhöhen.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die vorgestellten Methoden sind in den meisten aktuellen Excel-Versionen verfügbar, die VBA unterstützen.

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