我有一个用户定义的函数,它接受一个具有相关内置enum
的参数:
Public Function bgrcolor_cells(rng As Range, xlcl As Long) As Integer
我想在单元格中编写这样的公式
=bgrcolor_cells($A2:$B2,vbRed)
而不是
=bgrcolor_cells($A2:$B2,255)
这可能吗?怎么样?
PS:我找到How can I use enum identifiers in Excel UDF,但它指的是用户定义的枚举。我不知道我想使用内置Enum的事实是否会产生影响。
编辑1 也许对内置Enum定义的代码进行自动读取可能有助于定义Jean-FrançoisCorbett的Class或命名范围,然后可以避免从头开始键入。我见过这种自动解析,可能的指针是:
http://www.cpearson.com/excel/EnumNameList.aspx
编辑2 (根据this) 已发布评论,指出“内置和用户定义的枚举没有区别”,这是一个骗局。我认为事实并非如此,如果引用的评论是正确的,那么对于目前具体和不同的问题,它可能是答案的一部分(也许值得发布)。
答案 0 :(得分:6)
The question you link to已涵盖此主题,接受的答案应该可以正常使用。 VBA内置枚举没有特别的快捷方式。
否则您可以尝试以下内容。
在我为此被私刑之前,我想说我这样做只是为了作为一个原则证明的乐趣,并且可能永远不会自己使用它!
创建一个名为ColorEnums
的类:
Option Explicit
Public vbRed As Long
Public vbGreen As Long
'etc.
Private Sub Class_Initialize()
vbRed = VBA.vbRed
vbGreen = VBA.vbGreen
'etc.
End Sub
制作这样的用户定义函数:
Function GetValueOfColorEnumByName(colorEnumName As String)
GetValueOfColorEnumByName = CallByName(New ColorEnums, colorEnumName, VbGet)
End Function
CallByName
允许我们(这非常难看)从字符串中的名称来评估类成员的值。
使用示例:
根据您自己的要求进行调整,风险自负。