Wie verwende ich reguläre Ausdrücke mit instr in VBA?

Wie verwende ich reguläre Ausdrücke mit instr in VBA?

Ich versuche, reguläre Ausdrücke zu verwenden und erhalte ständig die Fehlermeldung (Compilerfehler) „LIST SEPARATOR“. Kann mir jemand sagen, welchen Teil ich falsch mache?

 if instr(1,regex.Pattern([A-Z]?dtest(rt,1)),b)>0 then

Antwort1

InStr() hatdieses Format:

InStr(startCharacter, searchInText, searchForText, compareMode)


startCharacter - a number (Long)
searchInText   - string (no RegEx, or pattern matching, or wildcard characters)
searchForText  - string (no RegEx, or pattern matching, or wildcard characters)
compareMode    - a number (from -1 to 2)

Es wird eine Zahl (Variante - Lang) zurückgegeben - der Index, in dem searchForTextsich befindetsearchInText


Versuchen Sie es mit diesen Optionen:

Option Explicit

Sub findTxt()
    Debug.Print InStrRegEx("987xyz", "[A-Z]")                   ' -> 4
    Debug.Print getText("987xyz", "[A-Z]")                      ' -> x

    Debug.Print InStr(1, "987xyz", "x")                         ' -> 4
    Debug.Print InStr(1, "987xyz", getText("987xyz", "[A-Z]"))  ' -> 4

    Debug.Print "987xyz" Like "*[A-Za-z]"                       ' -> True
End Sub

Public Function InStrRegEx(ByVal searchIn As String, ByVal searchFor As String) As Long
    Dim regEx As Object, found As Object
    If Len(searchIn) > 0 And Len(searchFor) > 0 Then
        Set regEx = CreateObject("VBScript.RegExp")
        regEx.Pattern = searchFor
        regEx.Global = True
        regEx.IgnoreCase = True
        Set found = regEx.Execute(searchIn)
        If found.Count <> 0 Then InStrRegEx = found(0).FirstIndex + 1
    End If
End Function

Public Function getText(ByVal searchIn As String, ByVal searchFor As String) As String
    Dim regEx As Object, found As Object
    If Len(searchIn) > 0 And Len(searchFor) > 0 Then
        Set regEx = CreateObject("VBScript.RegExp")
        regEx.Pattern = searchFor
        regEx.Global = True
        regEx.IgnoreCase = True
        Set found = regEx.Execute(searchIn)
        If found.Count <> 0 Then getText = CStr(found(0))
    End If
End Function

verwandte Informationen