在Excel VBA中使用此行时:
Cells(a, 20).Value = regexProjet.Execute(Cells(a, 1).Value)(0)
我收到警告,说参数或命令无效。
我在我的代码中的许多地方都使用过这一行,并且工作正常,单元格的格式都是标准的(它们是字符串......)。
任何人都可以给我一些关于要寻找什么的提示?
这是我宣布正则表达式的方式:
Dim regexProjet As Object
Set regexProjet = CreateObject("VBScript.RegExp")
regexProjet.IgnoreCase = True
regexProjet.Pattern = "^ ([a-z]+)(-)([0-9]+)" 'conserve seulement la clé du projet
答案 0 :(得分:2)
如果您的正则表达式与您的数据不匹配,您将得到该回复。为了避免它,使用您正在使用的技术,首先进行测试,看看你的正则表达式是否与你的字符串匹配。
e.g:
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
此外,您应该注意,如果您只是尝试匹配整体模式,则不需要捕获组(并且它们将增加执行时间,使正则表达式效率降低)。
答案 1 :(得分:0)
以下是我在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