san*_*ica 3 excel enums vba excel-vba user-defined-functions
我有一个用户定义的函数,它接受一个具有相关内置的参数enum:
Public Function bgrcolor_cells(rng As Range, xlcl As Long) As Integer
Run Code Online (Sandbox Code Playgroud)
我想在单元格中写出这样的公式
=bgrcolor_cells($A2:$B2,vbRed)
Run Code Online (Sandbox Code Playgroud)
代替
=bgrcolor_cells($A2:$B2,255)
Run Code Online (Sandbox Code Playgroud)
那可能吗?怎么样?
PS:我发现如何在Excel UDF中使用枚举标识符,但它引用用户定义的枚举.我不知道我想使用内置Enum的事实是否有所不同.
编辑1 也许对内置Enum定义的代码进行一些自动读取可能有助于定义Jean-FrançoisCorbett的Class或命名范围,然后可以避免从头开始输入.我见过这种自动解析,可能的指针是:
http://www.cpearson.com/excel/EnumNameList.aspx
编辑2(根据此)已发布评论,指出"内置和用户定义的枚举没有区别",这是一个骗局.我认为不是,如果引用的评论是正确的,那么对于当前具体和不同的问题,它可能是答案的一部分(也许值得发布).
您链接的问题已涵盖此主题,并且接受的答案应该可以正常工作.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
Run Code Online (Sandbox Code Playgroud)
创建一个这样的用户定义函数:
Function GetValueOfColorEnumByName(colorEnumName As String)
GetValueOfColorEnumByName = CallByName(New ColorEnums, colorEnumName, VbGet)
End Function
Run Code Online (Sandbox Code Playgroud)
在哪里CallByName允许我们(这非常难看)从字符串中的名称来评估类成员的值.
用法示例:

适应您自己的要求,风险自负.
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |