IsMissing関数

IsMissing関数は、VBA関数の中でデータ型変換関数に分類される関数です。

目次

スポンサー リンク

IsMissing関数とは

IsMissing関数は、プロシージャに省略可能なバリアント型 (Variant) の引数が渡されたかどうかを調べ、結果をブール型 (Boolean) で返します。

構文IsMissing(argname)
引数省略説明
expression ×引数 argname には、プロシージャの省略可能なバリアント型 (Variant) の引数の名前を指定します。

IsMissing 関数は、プロシージャを呼び出すときに省略可能なバリアント型 (Variant) の引数がプロシージャに渡されたかどうかを調べるために使用します。指定した引数が渡されていない場合は、真 (True) を返します。それ以外は偽 (False) を返します。IsMissing 関数がある引数に対して真 (True) を返すときに、その引数を他のコード内で使うと、ユーザー定義エラーが発生することがあります。キーワード ParamArray を指定した引数に IsMissing 関数を使うと、常に偽 (False) が返されます。キーワード ParamArray を指定した引数が空であるかどうかを調べるには、配列の上限が下限よりも小さいかどうかをテストします。

IsMissing 関数では、バリアント型ではない、整数型や倍精度浮動小数点型などの通常のデータ型に対しては無効です。これは、整数型などのデータ型では、引数が指定されたかどうかを判断するためのフラグが提供できないためです。よって、バリアント型以外の引数を判別したい場合は、プロシージャの構文内で変数の既定値を代入しておきます。プロシージャを呼び出したときに引数が省略された場合は、下のコード例のように引数の値は既定値と同じ値になります。


Sub MySub(Optional MyVar As String = "specialvalue")
    If MyVar = "specialvalue" Then
        ' 引数 MyVar が省略された場合
    Else
    ...
End Sub

実際のコードでは、MyVar の既定値がプロシージャの引数省略時の変数値として適切ならば、 "If MyVar ..." の箇所のコードを省略することもできます。

IsMissing関数のサンプルコード

次の例は、IsMissing 関数を使って、省略可能な引数がユーザー定義プロシージャに渡されたかどうかを調べます。キーワード Optional が指定された引数は、既定値とバリアント型以外のデータ型を持つことができます。


Dim ReturnValue
' 次のステートメントは、ユーザー定義の Function プロシージャを呼び出します。
ReturnValue = ReturnTwice()        ' Null 値を返します。
ReturnValue = ReturnTwice(2)        ' 4 を返します。

' Function プロシージャの定義。
Function ReturnTwice(Optional A)
    If IsMissing(A) Then
        ' 引数が省略されているときは、Null 値を返します。
        ReturnTwice = Null
    Else
        ' 引数が指定されているときは、その値を 2 倍にして返します。
        ReturnTwice = A * 2
    End If
End Function

実行結果

解説

データ型変換関数一覧

関数名内容
CBool指定した式をブール型に変換します。
CByte指定した式をバイト型に変換します。
CCur指定した式を通貨型に変換します。
CDate指定した式を日付型に変換します。
CDbl指定した式を倍精度浮動小数点数型に変換します。
CDec指定した式を10進型に変換します。
CInt指定した式を整数型に変換します。
CLng指定した式を長整数型に変換します。
CSng指定した式を単精度浮動小数点数型に変換します。
CStr指定した式を文字列型に変換します。
CVar指定した式をバリアント型に変換します。
CVDate旧バージョンと互換を保つための関数で、バリアント型の日付を返します。
Int指定した数値の整数部分を抽出します。指定した数値が負の場合は、値を超えない最大の負の整数を抽出します。
IsDate式が日付に変換できるかどうかを調べた結果を返します。
IsEmpty変数がEmptyかどうかを調べた結果を返します。
IsMissingプロシージャに省略可能なバリアント型の引数がわたされたかどうかを調べた結果を返します。
IsNumeric式にNull値が含まれているかどうかを調べた結果を返します。
IsObject変数がオブジェクト変数かどうかを調べた結果を返します。
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。