2017-07-28 143 views
0

我的代码:VBA错误:方法或数据成员找不到

Public Sub splitUpRegexPattern() 
Dim regEx As New RegExp 
Dim strPattern As String 
Dim strInput As String 
Dim strReplace As String 
Dim Myrange As Range 

Set Myrange = ActiveSheet.Range("B2:B4279") 

For Each c In Myrange 
    strPattern = "([A-Z]{2}\/[A-Z]{2}\/[A-Z][0-9]{2}\/[a-z]{3}[0-9]{9}\/)([0-9]{4})" 

    If strPattern <> "" Then 
     strInput = c.Value 
     strReplace = "$1" 

     With regEx 
      .Global = True 
      .MultiLine = True 
      .IgnoreCase = False 
      .Pattern = strPattern 
     End With 

     If regEx.test(strInput) Then 
      c.Offset(0, 1) = regEx.Replace(strInput, "$2") 
     Else 
      c.Offset(0, 1) = "" 
     End If 
    End If 
Next 

末次

它最初运作良好,它会给我一个错误,但仍然完成它的任务这样做。但是,当我用这个宏在新的电子表格,它给我的错误:

Compile Error: Method or Data Member not found.

所有在这个网站解决方案是针对不同的情况,所以我不能不幸的是它们适用于我的情况。

我不知道为什么会发生这种情况,因为我没有更改任何代码。我相信,如果我对VBA脚本有了更深入的了解,我就能理解这一点,但我不知道,所以我来找出这里有人能帮助我!

谢谢!

艾丹

+1

可能是你正在一个实例'RegExp'的对象。 –

回答

2

您需要添加对名为“Microsoft VBScript Regular Expressions 5.5”的库的引用才能使其正常工作。

如果此代码在工作簿中工作,仅表示您已添加该库引用,并且在将代码复制到新工作簿时需要再次添加相同的引用。

在现有的代码中,您将自动实例化名为redEx的变量,该变量假定已经添加了库引用以使其正常工作。

为了避免这种情况,您可以使用后期绑定技术,该技术不需要您添加引用,并且代码可以在任何工作簿上使用。

这样做声明的正则表达式变量像下面的对象...

Dim regEx As Object 
Set regEx = CreateObject("VBScript.RegExp") 
+0

是的,只需要添加该代码,谢谢<3 –

2

我最好的猜测是你失去了对图书馆的引用。在VBE中,选择工具 - 参考。找到Microsoft VBScript正则表达式5.5并勾选它。

+0

我已经这样做了,但感谢您的帮助! :D –

相关问题