【发布时间】:2016-04-10 17:12:50
【问题描述】:
我正在尝试基于此链接的第二步中的一个创建自己的 VBA 函数。 How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops
但是,我收到 #NAME 错误。我在哪里错了?我已经在 https://regex101.com 上测试了我的 RegEx。
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
【问题讨论】:
-
你是从工作表单元格调用这个函数,而单元格中的返回是#NAME?如果是这样的话,你把代码放在哪里了?它通常应位于同一工作簿的常规模块中。您是否将模块命名为与函数相同的名称?另外,您是否在工具/参考下设置了对正则表达式的引用?
-
是的,我从工作表单元格中调用它,单元格中的返回是#NAME。该代码位于工作簿的一个模块中。模块和函数确实具有相同的名称。我已经打开了对正则表达式的引用。当我逐字复制粘贴链接的第 2 步中的代码时,一切正常,但是当我这样做时,它会导致 #NAME 错误,这意味着这是代码问题,而不是命名架构、位置或引用。
-
你是如何以及在哪里放置 VBA 代码的?
-
抱歉,刚刚编辑了我原来的回复。不小心按早进入。
-
如果你的模块和函数同名,Excel不知道你指的是哪个。所以他们需要有不同的名字,或者你需要使用一个完全限定的名字。