返回一个 布尔 值,该值指示是否已将可选的 Variant参数 传递给 过程 。
语法
IsMissing ( argname )
所需的 argname 参数包含可选 Variant 过程参数的名称。
备注
使用 IsMissing 函数检测在调用过程中是否提供了可选的 Variant 参数。 如果未为指定参数传递任何值,则 IsMissing 返回 True;否则,返回 False。 如果 IsMissing 为参数返回 True ,则在其他代码中使用缺少的参数可能会导致用户定义的错误。 如果对 ParamArray 参数使用 IsMissing,则始终返回 False。 若要检测空 ParamArray,请测试以查看数组的上限是否小于其下限。
注意: IsMissing 不适用于简单的数据类型 (,例如 Integer 或 Double) ,因为与 Variants 不同,它们没有针对“缺失”标志位的预配。 因此,类型化可选参数的语法允许指定默认值。 如果在调用过程时省略参数,则该参数将具有此默认值,如以下示例所示:
注意: 下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。
Sub MySub(Optional MyVar As String = "specialvalue")
If MyVar = "specialvalue" Then ' MyVar was omitted. Else ... End Sub
在许多情况下,可以完全省略 If MyVar 测试,方法是将默认值设置为与 MyVar 要包含的值相等(如果用户从函数调用中省略该值)。 这使代码更加简洁高效。
示例
此示例使用 IsMissing 函数检查是否已将可选参数传递给用户定义的过程。 请注意, 可选 参数现在可具有除 Variant 以外的默认值和类型。
Dim ReturnValue
' The following statements call the user-defined ' function procedure. ReturnValue = ReturnTwice() ' Returns Null. ReturnValue = ReturnTwice(2) ' Returns 4. ' Function procedure definition. Function ReturnTwice(Optional A) If IsMissing(A) Then ' If argument is missing, return a Null. ReturnTwice = Null Else ' If argument is present, return twice the value. ReturnTwice = A * 2 End If End Function