我想要一个可能的值列表,当我调用函数func1时显示。我发现了一种通过ENUM在VBA中实现此功能的方法,但这在工作表中不起作用。所以我创建了一个函数e,它将某些字符串转换为正确的枚举值。不幸的是,我找不到一个方法来调用这个函数func1与一个字符串或枚举值没有得到错误或失去功能。下面是我到目前为止有:VBA:非排他性ENUM或忽略类型13错误?
Enum eLanguages
evEnglish = 2
evItalian = 3
'and so on
End Enum
Function e(vString)
Select Case vString
Case "english", "eng", "en", "e"
e = evEnglish
Case "italian", "italien", "it", "i"
e = evItalian
Case Else
e = vString '(= will keep the value if it's already a number)
End Select
End Function
选项1:显示可能值的列表中VBA打字的时候,但不会为字符串输入
Function func1(var As eLanguages)
func1 = e(var)
End Function
Sub test1()
MsgBox func1(evEnglish) 'Will result in 2 (through the enum and the e function)
MsgBox func1("e") 'Type 13 error
End Sub
选项2的工作:给出正确的结果,但我没有在VBA
得到可能值的列表Function func2(var)
func2 = e(var)
End Function
Sub test2()
MsgBox func2(evEnglish) 'Will result in 2 (through the enum and the e function)
MsgBox func2("e") 'Will result in 2 (through the e function)
End Sub
注:调用任何像这样的两个功能将给予正确的结果,但很明显,我并不热衷于不必写Ë () 每次我调用该函数: MsgBox func1(e("e"))
那么,你对如何忽略类型13错误或如何包括在ENUM声明选项“允许任何字符串”有什么建议?
在此先感谢。
什么是'eLanguages'?你需要解释你在做什么。似乎缺少拼图。 –
对不起,eLanguages是枚举。 – Angela1234
好的 - 什么是'e'?既然你的问题是关于当你以某种方式调用'e'时会发生什么,所以在不知道实际是什么的情况下回答几乎是不可能的。 –