VBA - 如何测试是否提供可选的字符串参数?

时间:2014-08-19 21:14:03

标签: excel-vba optional-parameters vba excel

这是对此的后续问题:

VB - How do I test if optional arguments are supplied or not?

如果我的输入类型是字符串(不是变体),有没有办法检查它是否丢失?到目前为止我发现的最好的是输入一个非常不可能的输入作为我的默认输入。

Function func (Optional arg As String = "VeryUnlikelyInput")

    If arg = "VeryUnlikelyInput" Then
        MsgBox "NOT SENT"
    End If

End Function

2 个答案:

答案 0 :(得分:4)

根本不提供默认值。然后缺少的参数将成为空指针:

Function IfDefault(Optional s As String) As Boolean
    IfDefault = (StrPtr(s) = 0)
End Function

? IfDefault()
> True

? IfDefault("aaaa")
> False

? IfDefault("")
> False

请注意,您仍然可以通过传递表单上空文本框的vbNullStringTextBox.Value来欺骗它,如果对话框被取消,则可以InputBox()Application.InputBox()当然没有这个问题,因为它在取消时会返回False

答案 1 :(得分:0)

如果这是用户输入的文字,请使用键盘上无法输入的字符,如“¤Þ”。

Function func (Optional arg As String = "¤Þ")
    If arg = "¤Þ" Then MsgBox "NOT SENT"

End Function