VBA mehrere übereinstimmungen in einem string mit regular expressions execute-Methode
Ich versuche, die Spiel-Erfahrung Ebenen für verschiedene Positionen auf 1. Grad 2. Jahre Erfahrung. Das Muster ist relativ einfach (Beispiel: "BS/5" wäre ein Abschluss als Bachelor of science mit 5 Jahren Erfahrung. Ich habe auch Einträge, die dieses Schema Folgen aber mehrere Grad und Erfahrung Ebenen in der gleichen Zeichenfolge (Beispiel: "BS/5 MS/2"), die als gleichwertig angesehen. Ich habe eine basic-Funktion zu entsprechen, wird und finden Sie die substring-Muster, aber es nie wieder mehr als ein Spiel, obwohl ich eingestellt habe .Global-Eigenschaft auf true für das regexp-Objekt. Irgendwelche Ideen? Code unter:
On Error Resume Next
ActiveWorkbook.VBProject.References.AddFromGuid "{3F4DACA7-160D-11D2-A8E9-00104B365C9F}", 5, 5
Dim theRegex As Object
Dim theString As String
Set theRegex = CreateObject("VBScript.RegExp")
With regex
.MultiLine = False
.Global = True
.IgnoreCase = False
End With
theRegex.Pattern = "([A-z][A-z][A-z]?/[0-9][0-9]?)"
theString = "MS/9-PhD/4"
Set MyMatches = theRegex.Execute(theString)
Debug.Print "SubMatches.Count: " & MyMatches.Item(0).SubMatches.Count
If MyMatches.Count <> 0 Then
With MyMatches
For myMatchCt = 0 To .Count - 1
Debug.Print "myMatchCt: " & myMatchCt
For subMtCt = 0 To .Item(subMtCt).SubMatches.Count - 1
Debug.Print "subMtCt: " & subMtCt
Debug.Print ("," & .Item(myMatchCt).SubMatches.Item(subMtCt))
Next
Next
End With
Else
Debug.Print "No Matches"
End If
Späten Kommentar. Aber es sieht auch wie Sie beziehen sich auf die falsche variable in der zweiten for-Schleife.
For subMtCt = 0 To .Item(subMtCt).SubMatches.Count - 1
sollte wohl For subMtCt = 0 To .Item(myMatchCt).SubMatches.Count - 1
InformationsquelleAutor user1902208 | 2013-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, die Linie
With Regex
zu
Ihre
On Error resume next
Aussage ist Verschleierung der Fehler.InformationsquelleAutor osknows