AW: VBA String-In-String-Suche mit Wildcard
01.02.2004 16:04:37
Lupus
Hallo Nepumuk,
mein Szenario sieht leider genau so aus, wie ich es beschrieben habe.
In einem großen String (strCheck) suche alle möglichen Strings, die einem Vergleichsstring (strMatch) entsprechen. Die gefundenen Vergleichsstrings und deren Anfangs und Endpositionen schreibe ich ein Array. Dies klappt alles prima, solange nicht mit Wildcards wie "*" und "?" gearbeitet wird.
Folgenden Ansatz habe ich jetzt formuliert. Leider gibt auch dieser nicht den exakten strFound zurück.
Sub Test()
Dim strCheck As String, strMatch As String
Dim strFound As String, strFirstChr As String
Dim lngPos As Long, i As Integer
strCheck = "Lupus bekommt das nicht hin! Sauerei!"
strMatch = "u*e"
strFirstChr = Left(strMatch, 1)
i = 1
lngPos = Application.WorksheetFunction.SearchB(strMatch, strCheck, 1)
For lngPos = 1 To Len(strCheck)
lngPos = InStr(lngPos, strCheck, strFirstChr)
If lngPos = 0 Then Exit For
strFound = Mid(strCheck, lngPos, LenFoundString(strCheck, strMatch))
Cells(i, 1).Value = strFound
i = i + 1
Next
End Sub
Public
Function LenFoundString(strCheck, strMatch) As Long
Dim lngLen As Long
lngLen = Len(strCheck)
While Left(strCheck, lngLen) Like strMatch
lngLen = lngLen - 1
Wend
LenFoundString = lngLen + 1
End Function
Der Code müßte noch in bezug auf strFirstChr = Left(strMatch, "Anzahlzeichen vor dem *")verbessert werden.
Aber auch das wäre keine optimale Lösung, denn der Suchstring könnte auch "u*u*e" lauten.
Ist schon eine verzwickte Sache.
Gruß Lupus