/ / Не мога да открия защо моята VBA проста команда за реджекс не работи

Не мога да намеря защо моята VBA проста команда regex не работи - regex, excel, vba, excel-vba

Когато използвате тази линия в Excel VBA:

Cells(a, 20).Value = regexProjet.Execute(Cells(a, 1).Value)(0)

Получавам предупреждение, че параметърът или командата са невалидни.

Имам използването на тази линия на много места в моя код и тя работи добре, форматът на клетките са всички стандартни (те са низове ...).

Всеки може да ми даде някои съвети за това какво да търси?

FYI това е начина, по който обявих режекс:

Dim regexProjet As Object
Set regexProjet = CreateObject("VBScript.RegExp")
regexProjet.IgnoreCase = True
regexProjet.Pattern = "^   ([a-z]+)(-)([0-9]+)" "conserve seulement la clé du projet

Отговори:

2 за отговор № 1

Ще получите този отговор, ако регулярните изречения не съвпадат с данните ви. За да го избегнете, използвайки техниката, която използвате, първо направете тест, за да видите дали регулярните изрази съответстват на вашия низ.

например:

If regexProjet.test(Cells(a,1).value) then
Cells(a, 20).Value = regexProjet.Execute(Cells(a, 1).Value)(0)
Else
... your error routine
End If

Също така, трябва да имате предвид, че ако просто се опитвате да съответствате на общия модел, няма нужда от групите за заснемане (и те ще добавят време за изпълнение, което прави по-малко ефективни).


0 за отговор № 2

Ето примерния код, който трябва да изпълня в Excel 2013, но е малко по-различен от това, което имате. Получих кода от [Как към редовните изрази]: http://support.microsoft.com/kb/818802

Sub testreg()

Dim regexProjet As New RegExp
Dim objMatch As Match
Dim colMatches   As MatchCollection
Dim RetStr As String

RetStr = ""

regexProjet.IgnoreCase = True
regexProjet.Pattern = "^   ([a-z]+)(-)([0-9]+)"


Set colMatches = regexProjet.Execute(Cells(1, 1).Value)

For Each objMatch In colMatches   " Iterate Matches collection.
RetStr = RetStr & " " & objMatch.Value
Next

Cells(1, 20).Value = RetStr

End Sub