在不同的计算机上运行VBA宏时出错

时间:2016-07-14 18:55:21

标签: regex vba excel-vba properties runtime-error

我在VBA中编写了一个非常适合我的文件的宏。问题是,当我在另一台计算机上运行此宏(同一文件)时,我收到以下错误:

  

无效的过程调用或参数(错误5)

...在以下代码中执行.Item(0).Value时:

With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "([a-zA-Zá-ùÁ-Ù])(\d+)"
    With .Execute(strText)
        strRes = .Item(0).Value

我怀疑某些东西可能依赖于特定的工作簿或文件路径(虽然我找不到依赖项),但我无法解决这种奇怪的行为。

1 个答案:

答案 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时,您可能需要采取不同的操作。上面的代码尝试继续使用空字符串,但是也许你想退出一个功能,或者向用户显示一条消息,或者还有其他东西......