我正试图在这个链接的第二步中创建我自己的VBA函数。如何在单元格和循环中使用Microsoft Excel中的正则表达式(Regex)
但是,我得到了一个#NAME错误。我哪里错了?我已经在上测试了我的RegExhttps://regex101.com.
Function extractGroupName(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = "^.*Name:(.*);Id"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = "$1"
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
extractGroupName = regEx.Replace(strInput, "$1")
Else
extractGroupName = "ERROR: NOT FOUND"
End If
End If
End Function
您似乎已经对模块和函数进行了相同的命名。当这种情况发生时,Excel不知道你的意思,所以返回#NAME错误。有两个修复:
-
更改其中一个或另一个的名称。我会经常用
mod
作为所有常规模块名称的前缀,以避免这个问题:modextractGroupName
-
使用完全限定的名称调用函数:
=extractGroupName.extractGroupName(A1)
看起来您缺少对Reg表达式库的引用。我认为这是"引用"对话框中的Microsoft VBScript正则表达式(工具:VBIDE中的引用)。。。