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

标签 vba excel parameters enums

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

Function Test(vTxt as Boolean)
    Msgbox vText
End Function

并从任何其他子调用它,我必须为vTxt给出True或False ,并且它不会接受任何其他值。例如,我可以调用 Test如:

Sub Example ()
    Call Test(True)
End Sub

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

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

以及调用 Test2 时,调用者必须为变量 vTxt 指定选项 1、选项 2 或选项 3 。我不想创建多个可选参数,而只想创建一个具有多个预定值的参数。我可以用来做什么<something>

最佳答案

我认为您想为用户提供有限数量的参数选择。 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 .

关于VBA:将函数参数限制为仅选定的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250515/

相关文章:

vba - 具有可变结尾整数的 For 循环

excel - VBA 将分隔 rune 本文件转换为 Excel

c - 如何更改 FUNC 中结构的值?

c# - ASP.NET C# 作用域问题

vba - 为什么 Debug.print 区分 bool 值和整数?

excel - 将数据从第 2 行复制到一张纸上的最后一行数据并粘贴到另一张纸的第一个空行的 VBA 代码

excel - 查找Excel单元格中重复出现的单词的频率和位置

excel - 有没有办法在Excel中获取截断数字的存储值

javascript - OnClick 传递 url 参数

vba - 将 Excel 用户窗体显示为任务栏中的按钮