Excel VBA - 设置枚举元素的值

 手机用户2702935897 发布于 2023-02-07 14:13

在类模块中有

Private Enum colType
    ID = "A"
    SSN = "B"
    lName = "H"
    fName = "G"
End Enum

作为私人会员.每当类初始化时,我都会收到 Compile Error:Type Mismatch消息.如果我宣布colTypePrivate Enum coltype As String.这会突出显示为红色错误,我收到编译错误:预期的语句结束消息.

在excel VBA中指定枚举元素的值是不允许的?

2 个回答
  • 正如评论中所写,这是不可能的.虽然我过去使用过,但仍有可能的解决方法.有:

    Private Enum colType
      ID = 1
      SSN = 2
      lName = 3
      fName = 4
    End Enum
    

    然后创建一个单独的String属性,例如:

    Public Property Get colType_String(colType) as String
      Dim v as Variant
      v= Array("A","B", ...)
      colType_String = vba.cstr(v(colType))
    End Property
    

    这不是最通用的解决方案,但它很容易实现,它可以完成工作......如果你已经在类模块中使用了这个,你甚至可以在私有colType变量上使用属性,并且不需要将colType输入到财产.

    2023-02-07 14:16 回答
  • 在某些情况下,我非常喜欢前人的解决方案,因此我赞成了它.更经常提出的解决方案如下:

    Enum myEnum
      myName1 = 1
      myName2 = 2
      myName3 = 3
    End Enum
    
    Function getEnumName(eValue As myEnum)
      Select Case eValue
      Case 1
        getEnumName = "myName1"
      Case 2
        getEnumName = "myName2"
      Case 3
        getEnumName = "myName3"
      End Select
    End Function
    

    Debug.Print getEnumName(2) prints "myName2"

    2023-02-07 14:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有