我有一个用户定义的函数,它接受一个参数,该参数具有关联的内置 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 ,但它指的是用户定义的枚举。我不知道我想使用内置枚举这一事实是否有所不同。
编辑 1 也许对定义内置 Enum 的代码进行一些自动阅读可能有助于定义 Jean-François Corbett 的类或命名范围,然后可以避免从头开始键入。我见过这样的自动解析,可能的指针是:
http://www.cpearson.com/excel/EnumNameList.aspx
编辑 2(根据 this) 已发布一条评论,指出“内置枚举和用户定义枚举没有区别”,这是一个骗局。我认为它不是,如果引用的评论是正确的,那么它可能是当前特定和不同问题的答案的一部分(也许值得这样发布)。
最佳答案
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
允许我们(这是非常难看的)从字符串中的名称评估类成员的值。
示例用法:
适应您自己的要求,风险自负。
关于excel - 在带有 UDF 的单元格公式中使用内置枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20424703/