VBA des correspondances multiples au sein d'une chaîne à l'aide des expressions régulières méthode execute

Je suis en train de faire correspondre les niveaux d'expérience pour différentes positions basé sur 1. Degré 2. Années d'Expérience. Le modèle est assez simple (exemple: "BS/5" serait un baccalauréat en sciences avec 5 ans d'expérience. J'ai aussi des entrées qui suivent ce régime, mais ont à plusieurs degrés et des niveaux d'expérience dans la même chaîne de caractères (exemple: "BS/5-MS/2") qui sont considérés comme équivalents. J'ai une fonction de base qui match et trouver la sous-chaîne, mais il ne revient jamais plus d'un match même si j'ai mis le .Mondiale de la propriété sur true pour l'objet regexp. Des idées? Le Code ci-dessous:

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
  • Fin du commentaire. Mais aussi, on dirait que vous faites allusion à la mauvaise variable dans la deuxième boucle. For subMtCt = 0 To .Item(subMtCt).SubMatches.Count - 1 devrait probablement être For subMtCt = 0 To .Item(myMatchCt).SubMatches.Count - 1
InformationsquelleAutor user1902208 | 2013-04-18