vba中如何将字符串类型转换为枚举类型

pengyao1207000001 2016-10-02 01:56:55
求大神解决。。。
我查了msdn,还是不行
Public Enum TestEnum
李六 = 1
李名 = 2
李大 = 3
End Enum
Sub testRun()
Dim a As TestEnum
ss = "李名"
a = [Enum].Parse([Enum].GetType(a), ss)
'将ss转换为a,但是却报错了
MsgBox a '使这里输出2
End Sub


...全文
1638 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2016-10-10
  • 打赏
  • 举报
回复
引用 5 楼 Bobogg 的回复:
这是一各很重要的功能 可惜 vb6 早已停止开发 所以没有此功能 vb.net 就有
这个主要是因为“原理”不一样吧! 不仅是VB.NET,好像基于“.NET架构”的编程语言都是这样的。 你在工程中定义的“枚举类型”,各个成员的名字都在“编译后”的文件中记录着, 它当然可以“反射”查找。 但是,像C++、Delphi、VB6等等这样用“机器码编译”(注:我暂时想不到合适的称呼), 编译后那些什么变量名、类型结构及成员名,根本就不存在了,肯定就不能支持这种“转换”。
bobogg 2016-10-10
  • 打赏
  • 举报
回复
这是一各很重要的功能 可惜 vb6 早已停止开发 所以没有此功能 vb.net 就有
bobogg 2016-10-10
  • 打赏
  • 举报
回复
另一种 enum 好用的功能是 public enum 中可以包 private 成员

public enum AAAA
a1
a2
a3
a4
private a5
End enum

赵4老师 2016-10-08
  • 打赏
  • 举报
回复
使用select case语句。
of123 2016-10-08
  • 打赏
  • 举报
回复
Dim names()

Private Sub Command1_Click()
Dim i As Integer

names = Array("", "李六", "李名", "李大")

For i = 0 To UBound(names)
    If Text1.Text = names(i) Then Text2 = i
Next i
End Sub
of123 2016-10-08
  • 打赏
  • 举报
回复
如果成员很多的话,用数据库表来转换。
舉杯邀明月 2016-10-02
  • 打赏
  • 举报
回复
我觉得你这个不能直接实现吧! 枚举类型中的“成员”仅在源代码中有效,它只是一个“代号”而已, 编译后的执行代码跟“具体名称”应该是没有任何关联的。 所以“从字符串内容”反射回枚举成员应该是不能实现的。 我认为你这种需求,可能只能通过“字典”的方式来处理了。

2,506

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧