【问题标题】:VBA: Restrict function arguments to only selected values?VBA:将函数参数限制为仅选定的值?
【发布时间】:2016-07-07 16:15:36
【问题描述】:

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

Function Test(vTxt as Boolean)
    Msgbox vText
End Function

并从任何其他 Sub 调用它,我必须为 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。我不想创建多个可选参数,而只想创建一个具有多个预定值的参数。 &lt;something&gt; 有什么用?

【问题讨论】:

  • 您需要多少种不同的选项?您可能会考虑使用Select Case 方法
  • 您的问题有点令人困惑,您的意思是:“并从任何其他 Sub 调用它我可以选择为 vTxt 提供 True 或 False,它不会接受任何其他值。喜欢”,因为您举了一个使用布尔值调用它的示例。

标签: vba excel parameters enums


【解决方案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

【讨论】:

  • 非常感谢 cxw。这正是我想要的......拯救了我的一天。?
  • @AnuragPattanayak 很高兴为您提供帮助! PS - 不要忘记查看tour 以获取对该站点的更详细介绍。祝你的程序好运!
  • @cwx 我肯定会……毫无疑问
猜你喜欢
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多