VB – 如何testing是否提供可选参数?

如何testing是否提供可选参数? – 在VB6 / VBA中

Function func (Optional ByRef arg As Variant = Nothing) If arg Is Nothing Then <----- run-time error 424 "object required" MsgBox "NOT SENT" End If End Function 

使用IsMissing

 If IsMissing(arg) Then MsgBox "Parameter arg not passed" End If 

但是,如果我没有记错,在为参数给出默认值时不起作用,并且在任何情况下都会使用默认参数而非冗余。

您可以使用IsMissing()函数。 但是这只适用于Variant数据types。

如果IsMissing(arg)那么…

如果使用string或数字variables,则可以检查variables的值。 例如:

 Function func (Optional Str as String, Optional Num as Integer) If Str = "" Then MsgBox "NOT SENT" End If If Num = 0 Then MsgBox "NOT SENT" End If End Function 

这使您可以使用非variablesvariables。

你可以使用像这样的东西:

 function func(optional vNum as integer:=&HFFFF) '&HFFFF value that is NEVER set on vNum If vNum = &HFFFF Then MsgBox "NOT SENT" End If End Function 

有了一个变种,我会使用NZ函数:

 Function func (Optional ByRef arg As Variant = Nothing) If nz ( arg, 0 ) = 0 Then MsgBox "NOT SENT" End If End Function 

它也可以和其他的数据types一起使用,只要记住零计数既不是零也不是零长度,所以nz(0,"")仍然返回0。