VBA:仅将函数参数限制为选定的值?

时间:2016-07-07 16:15:37

标签: vba excel-vba parameters enums excel

是否可以定义VBA功能,以便它只接受特定的预定义值作为参数值?例如,如果我创建一个这样的函数:

Function Test(vTxt as Boolean)
    Msgbox vText
End Function

并从任何其他Sub调用它我必须为vTxt给出正确或错误,并且它不会接受任何其他值。例如,我可以将Test称为:

Sub Example ()
    Call Test(True)
End Sub

这样,我可以在函数中设置其他参数,以便调用者只能从预定选项中进行选择吗?例如:

Function Test2(vTxt as <something>)
    Msgbox vText
End Function 

并且在呼叫Test2时,呼叫者必须为变量vTxt指定选项1,选项2或选项3。我不想创建多个可选参数,只是一个具有多个预定值的参数。我可以将哪些内容用于<something>

1 个答案:

答案 0 :(得分:1)

我认为您希望为用户提供有限数量的参数选择。 Enum types是一种方法。在模块的开头,创建您的类型:

Public Enum TestChoices
    Option1
    Option2
    Option3
End Enum

然后,在您的函数中,使用TestChoices参数:

Sub Test(vMsg as TestChoices)
    Dim message as String
    Select Case vMsg
        Case Option1: message="option 1 selected"
        Case Option2: message="option 2 selected"
        Case Option3: message="option 3 selected"
    End Select
    MsgBox message
End Sub

另请参阅MSDN docs for enums