Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Selcet Case Like mit #

Selcet Case Like mit #
10.05.2023 06:11:21
Mike

Hallo zusammen,

ich verstehe nicht warum der nachfolgende Case Select nicht funktioniert.

Nach meinem Verständnis sollte doch strL mit P2 in das Case Else laufen und mit P21 bei der ersten Prüfung ein Treffer ergeben.
Warum fuktioniert das nicht?

Sub TEST()

Dim strL As String
Dim wsQuelle As Worksheet

'strL = "P2"
strL = "P21"

Select Case strL
                Case strL = "P2#*"
                    wsQuelle = ThisWorkbook.Sheets("L3Import")
                Case strL Like "P4#*"
                    wsQuelle = ThisWorkbook.Sheets("L4Import")
                Case strL Like "P5#*"
                    wsQuelle = ThisWorkbook.Sheets("L5Import")
                Case strL Like "P6#*"
                    wsQuelle = ThisWorkbook.Sheets("L6Import")
                Case Else
                    MsgBox "Kein Import"
            End Select

End Sub


Kann jemand weiterhelfen und erklären?

Gruß
Mike

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selcet Case Like mit #
10.05.2023 06:18:35
Mike
der Code im ersten Beitrag ist fehlerhaft. Ich hatte soviel rumprobiert das ich vergessen habe wieder das = durch like zu ersetzen.

Sub TEST()

Dim strL As String
Dim wsQuelle As Worksheet

'strL = "P2"
strL = "P21"

Select Case strL
                Case strL Like "P2#*"
                    wsQuelle = ThisWorkbook.Sheets("L3Import")
                Case strL Like "P4#*"
                    wsQuelle = ThisWorkbook.Sheets("L4Import")
                Case strL Like "P5#*"
                    wsQuelle = ThisWorkbook.Sheets("L5Import")
                Case strL Like "P6#*"
                    wsQuelle = ThisWorkbook.Sheets("L6Import")
                Case Else
                    MsgBox "Kein Import"
            End Select

End Sub


Anzeige
AW: Selcet Case Like mit #
10.05.2023 09:17:37
Daniel
Hi
strL Like "P2#*" hat als Ergebnis True, deswegen
Select Case True
In diesem Fall ist vielleicht das If Then ElseIf anschaulicher:


                If strL Like "P2#*" then
                    Set wsQuelle = ThisWorkbook.Sheets("L3Import")
                Elseif strL Like "P4#*" then
                    Set wsQuelle = ThisWorkbook.Sheets("L4Import")
                Elseif strL Like "P5#*"
                    Set wsQuelle = ThisWorkbook.Sheets("L5Import")
                Elseif strL Like "P6#*"
                    Set wsQuelle = ThisWorkbook.Sheets("L6Import")
                Else
                     MsgBox "Kein Import"
                Ende if
Oder man löst es ganz anders

If not strL like "P[2-6]#*" then
    Msgbox "kein import"
Else
    Set wsQuelle = Thisworkbook.Sheets("L" & Clng(Mid(strL, 2, 1)) + 1) & "Import")
End if
Gruß Daniel


Anzeige
AW: Selcet Case Like mit #
10.05.2023 13:03:06
Mike
Hallo Daniel,

Danke. Ein Like für deine zweite Lösung ;-) Gefällt mir sehr gut.
Letztlich hab ich ja gar nicht so falsch gelegen mit meinem Code. Mit dem True hätte ich auch selber drauf kommen können aber es sind ja oftmals die einfachen Dinge die ein Brett erzeugen. :-)

Da es mir aktuell für eventuelle Erweiterungen einfacher erscheint habe ich meine Vorgehensweise beibehalten und lediglich um ein = true ergänzt.

Danke fürs erklären und Brett entfernen.
Gruß
Mike


Anzeige
AW: Selcet Case Like mit #
10.05.2023 07:15:36
GerdL
Moin
Sub TEST()

Dim strL As String
Dim wsQuelle As Worksheet

'strL = "P2"
strL = "P21"

Select Case True
    Case Len(strL) > 2 And Left$(strL, 2) = "P2"
        Set wsQuelle = ThisWorkbook.Sheets("L3Import")
    
    Case Else
        MsgBox "Kein Import"
End Select

End Sub
Das Is-Schlüsselwort verwenden Sie mit Vergleichsoperatoren (außer Is und Like), um einen Wertebereich anzugeben. Wenn das Is-Schlüsselwort nicht angegeben wird, wird es automatisch eingefügt.

Gruß Gerd


warum LIKE ...
10.05.2023 09:34:29
Rudi Maintaire
Hallo,
...und nicht einfach Left?
Select Case Left(strL,2)
                   Case "P2": wsQuelle = ThisWorkbook.Sheets("L3Import")
                   Case "P4": wsQuelle = ThisWorkbook.Sheets("L4Import")
Gruß
Rudi


Anzeige
AW: warum LIKE ...
10.05.2023 09:55:44
Daniel
naja, dich denke mal, das # als Joker für Ziffern hat schon seinen Grund
Left(strL, 2) = "P2" ist äquivalent stL like "P2*" und nicht strL like "P2#*"
bei letzterem muss nach dem P2 noch eine Ziffer folgen, damit der Ausdruck WAHR ergibt.'
Bei dir würde auch ein "P2x" oder soger nur ein "P2" ein WAHR erzeugen.
Gruß Daniel


AW: warum LIKE ...
10.05.2023 11:28:41
Pappawinni
naja, man kann ja immerhin auch die Zahl abtrennen und dann sowas...

   Select Case CLng(Right(strl, Len(strl) - 1))
        Case 1 To 11
            Debug.Print "L3Import"
        Case 12 To 23
            Debug.Print "L4Import"
        Case 24 To 29
            Debug.Print "L5Import"
        Case 30 To 59
            Debug.Print "L6Import"
        Case Else
            MsgBox "Kein Import"
    End Select


Anzeige
AW: oder weniger LIKE
10.05.2023 12:38:11
Pappawinni
Für das konkrete Beispiel , sogar mit ein bisschen like

   
    Select Case CLng(IIf(strl Like "P##*", Mid(strl, 2, 2), "0"))
        Case 20 To 29
            wsQuelle = ThisWorkbook.Sheets("L3Import")
        Case 40 To 49
            wsQuelle = ThisWorkbook.Sheets("L4Import")
        Case 50 To 59
            wsQuelle = ThisWorkbook.Sheets("L5Import")
        Case 60 To 69
            wsQuelle = ThisWorkbook.Sheets("L6Import")
        Case Else
            MsgBox "Kein Import"
    End Select


Anzeige
AW: Selcet Case Like mit #
10.05.2023 13:04:00
Mike
Danke an alle für eure Hilfe.
Fehler hab ich verstanden und Lösung umgesetzt.

Gruß
Mike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige