次の方法で共有


IsMissing 関数

オプションの Variant引数がプロシージャに渡されたかどうかを示すブール値を返します

構文

IsMissing(argname)

必須の argname 引数には、オプションの Variant プロシージャ引数の名前が含まれます。

解説

IsMissing 関数を使用して、プロシージャの呼び出しでオプションの Variant 引数が指定されているかどうかを検出します。 指定した引数に値が渡されていない場合、IsMissingTrue を返します。それ以外の場合は False を返します

引数に対して IsMissingTrue を返した場合、他のコードで不足している引数を使用すると、ユーザー定義エラーが発生する可能性があります。

引数 ParamArrayIsMissing を使用すると、常に False が返されます。 空の ParamArray を検出するには、 配列の 上限が下限より小さいかどうかをテストします。

IsMissing は単純なデータ型 ( IntegerDouble など) では機能しません。 バリアント型とは異なり、"欠落" フラグ ビットのプロビジョニングがないためです。 このため、型指定された省略可能な引数の構文では、既定値を指定できます。 プロシージャの呼び出し時に引数を省略すると、次の例のように、引数にこの既定値が設定されます。

    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

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。