这是对此的后续问题:
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
答案 0 :(得分:4)
根本不提供默认值。然后缺少的参数将成为空指针:
Function IfDefault(Optional s As String) As Boolean
IfDefault = (StrPtr(s) = 0)
End Function
? IfDefault()
> True
? IfDefault("aaaa")
> False
? IfDefault("")
> False
请注意,您仍然可以通过传递表单上空文本框的vbNullString
,TextBox.Value
来欺骗它,如果对话框被取消,则可以InputBox()
。 Application.InputBox()
当然没有这个问题,因为它在取消时会返回False
。
答案 1 :(得分:0)
如果这是用户输入的文字,请使用键盘上无法输入的字符,如“¤Þ”。
Function func (Optional arg As String = "¤Þ")
If arg = "¤Þ" Then MsgBox "NOT SENT"
End Function