vba - 有没有办法在 VBA 中获取枚举?

标签 vba reflection enums

有没有办法在 VBA 中获取枚举?类似于 C# 的这个示例,但适用于 VBA?

using System;

class EnumsExampleZ
{
    private enum SiteNames
    {
        SomeSample = 1,
        SomeOtherSample = 2,
        SomeThirdSample = 3
    }

    static void Main()
    {
        Type enumType = typeof(SiteNames);
        string[] enumName = enumType.GetEnumNames();

        for (int i = 0; i < enumName.Length; i++)
        {
            Console.WriteLine(enumName[i]);
        }
    }
}

假设我们有以下内容:
Enum FruitType
    Apple = 1
    Orange = 2
    Plum = 3
End Enum

我们如何在即时窗口中显示这些:
Apple
Orange
Plum

最佳答案

没有内置函数,尽管在具体情况下很容易推出自己的函数:

Enum FruitType
    Apple = 1
    Orange = 2
    Plum = 3
End Enum

Function EnumName(i As Long) As String
    EnumName = Array("Apple","Orange","Plum")(i-1)
End Function

如果你有几个不同的枚举,你可以添加一个参数,它是枚举的字符串名称和 Select Case在上面。

说了这么多,可能可以通过编写 VBA 编辑器的脚本来做一些事情,尽管这不太值得(恕我直言)。

关于vba - 有没有办法在 VBA 中获取枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578348/

相关文章:

c++ - 来自 int C++ 类的无效转换

VBA - 文件夹选择器 - 设置从哪里开始

excel - 在 Excel 2013 中使用宏设置打印区域

java - 反射访问最终静态变量而不进行初始化

C# 反射匹配类型 List<T> where T IsSubClass(Foo)

enums - 有没有办法创建枚举值的别名?

excel - VBA 下标超出范围 - 错误 9

vba - 如何使用 WorksheetFunction.VLookup 处理 1004 错误?

java - 通过反射获取 Java 字段,而不是通过其 String 名称

java - 如何在java中获取枚举的所有可能值? (不知 Prop 体的枚举)