在UDF的单元格公式中使用内置枚举

我有一个用户定义的函数,它需要一个具有关联内置enum的参数:

 Public Function bgrcolor_cells(rng As Range, xlcl As Long) As Integer 

我想在单元格中写出这样的公式

 =bgrcolor_cells($A2:$B2,vbRed) 

代替

 =bgrcolor_cells($A2:$B2,255) 

那可能吗? 怎么样?

PS:我发现如何在Excel UDF中使用枚举标识符 ,但它引用了用户定义的枚举。 我不知道我是否想要使用内build的枚举实际上有所作为。

编辑1也许一些自动阅读内置枚举定义的代码可能有助于定义由Jean-FrançoisCorbett或命名范围的类,然后将避免从头打字。 我已经看到了这样的自动parsing,可能的指针是:

http://www.cpearson.com/excel/EnumNameList.aspx

http://www.excelforum.com/excel-programming-vba-macros/356892-programmatic-generation-of-enum-to-string-functions.html

编辑2 (按照这个 )评论已经发布,指出“有没有区别的内置和用户定义的枚举”,这是一个骗局。 我认为这不是,而且如果引用的评论是正确的,那么对于当前的具体和不同的问题,这可能是答案的一部分(也许值得一提)。

你链接到的问题已经涵盖了这个话题,接受的答案应该工作得很好。 VBA内置的枚举没有特别的捷径。

否则,您可以尝试如下所示。


仅用于娱乐目的

在此之前,我想说,我这样做只是为了娱乐作为一个原则的certificate,并可能永远不会使用这个我自己!

创build一个名为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,如下所示:

 Function GetValueOfColorEnumByName(colorEnumName As String) GetValueOfColorEnumByName = CallByName(New ColorEnums, colorEnumName, VbGet) End Function 

CallByName允许我们(这是非常丑陋的)从一个string的名称中评估一个类的成员的值。

用法示例:

在这里输入图像说明

适应你自己的要求,风险自负。