excel - 在带有 UDF 的单元格公式中使用内置枚举

标签 excel enums user-defined-functions vba

我有一个用户定义的函数,它接受一个参数,该参数具有关联的内置 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

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

编辑 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 允许我们(这是非常难看的)从字符串中的名称评估类成员的值。

示例用法:

enter image description here

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

关于excel - 在带有 UDF 的单元格公式中使用内置枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20424703/

相关文章:

java - 用自定义关键字替换 java 命令?

c++ - 将 C++ 函数导入 teradata

language-agnostic - 使用大量参数的缺点

excel - 使用值进行条件格式设置时单元格错误

excel - 使用目标来识别小区位置

excel - VBA for Excel 填充范围内缺少的工作日并标记 "New Mondays"

c++ - 如何从其值中获取枚举项名称

java - 这些类和子类静态 block 何时执行(对于枚举)?

excel - VBA在一列上从A到Z排序

ruby-on-rails - Rails 使用动态选项枚举