我在VBA中编写了一个非常适合我的文件的宏。问题是,当我在另一台计算机上运行此宏(同一文件)时,我收到以下错误:
无效的过程调用或参数(错误5)
...在以下代码中执行.Item(0).Value
时:
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "([a-zA-Zá-ùÁ-Ù])(\d+)"
With .Execute(strText)
strRes = .Item(0).Value
我怀疑某些东西可能依赖于特定的工作簿或文件路径(虽然我找不到依赖项),但我无法解决这种奇怪的行为。
答案 0 :(得分:4)
它实际上意味着字符串 strText 与正则表达式不匹配。如docs中所述:
如果找不到匹配项,
Execute
将返回一个空的Matches Collection。
所以这意味着.Item(0)
不存在并且是无效的引用:
strRes = .Item(0).Value
要解决此问题,请使用Count
属性测试集合中是否至少有一个元素:
With .Execute(strText)
strRes = "" ' Default value
If .Count > 0 Then strRes = .Item(0).Value
根据代码对 strRes 的作用,当 Count 为0时,您可能需要采取不同的操作。上面的代码尝试继续使用空字符串,但是也许你想退出一个功能,或者向用户显示一条消息,或者还有其他东西......