【发布时间】:2018-05-17 21:13:08
【问题描述】:
我使用 VBA 代码构建了一个用户定义的函数,如果我在公式中使用它来填充单元格值,它在 Excel 中可以正常工作。但是,我不能在条件格式中使用此功能。我收到消息“这种类型的引用不能在条件格式公式中使用”。
我很好奇是否可以在条件格式中使用任何 UDF?或者根本不允许UDF?谢谢!
UDF 代码如下:
Function isValidMAC(mac As String) As Boolean
Dim regex As New RegExp
Dim strPattern As String
' Exact 12 characters. Valid characters are a-f or A-F or 0-9
strPattern = "^[a-fA-F0-9]{12}$"
With regex
.Global = False
.MultiLine = False
.IgnoreCase = False
.Pattern = strPattern
End With
isValidMAC = regex.Test(mac)
End Function
【问题讨论】:
-
您将代码放在公共模块还是私有工作表代码表中?
-
您指的是哪个代码?对于 UDF 代码,它在公共模块中,否则 Excel 用户根本看不到它。有趣的是 - Excel 允许在条件格式公式中使用虚假函数名(例如“=XXX($A$1)”)。然而 Excel 抱怨一个有效的 UDF。
-
很像这个link。我的 UDF 在一个模块中。该函数被声明为公共函数。但我不知道如何将模块声明为公共(如果有诸如“公共模块”之类的东西)。 :)
-
模块代码表默认是公开的;工作表代码表本质上是私有的。
-
UDF 只需要位于 Same 工作簿的 Regular 模块中。你的公式应该返回
True或False