Excel VBAの「IsMissing 関数」について解説します。
IsMissing 関数とは
Excel VBA の IsMissing 関数は、プロシージャを呼び出す際に省略可能なバリアント型(Variant)の引数が渡されたかどうかを判定するために使われます。判定結果はブール型(Boolean)の値で返します。
IsMissing 関数について過去の記事内でも簡単に触れていますのでよろしければこちらもご覧ください。
この記事の中で、省略可能とするキーワード「Optional」についてや、IsMissing 関数を使用したサンプルコードなも紹介しています。
IsMissing 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
IsMissing 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
IsMissing(argname)
引数
引数 | 説明 |
---|---|
expression | 【必須】省略可能なバリアント型の引数の名前を指定します |
※ 省略可能な引数とは、プロシージャ宣言に Optional キーワードを付けた引数のことです。
戻り値
戻り値 | 説明 |
---|---|
ブール値 (Boolean) | 引数が渡されていない場合は True 、 渡されていた場合は False を返します |
解説(使用例)
以下、IsMissing 関数の使用例のサンプルコードです。
IsMissingr関数サンプル1 (Functionプロシージャの例)
IsMissing 関数を Function プロシージャ内で使用し割引後の金額を算出します。
二つの引数のうち2番目の引数(割引率%)を省略可能としている事例です。
'■IsMissing関数サンプル1 (Functionプロシージャの例)
Sub IsMissing_Sample01()
Dim a As Long, b As String, c As Long
a = CLng(InputBox("金額を入力してください"))
b = InputBox("割引率%を整数(1~99)で入力してください")
If b = "" Or b = "0" Then
MsgBox priceCalc(a) & "円です(割引なし)"
Else
c = priceCalc(a, CInt(b))
MsgBox c & "円です(割引" & CInt(b) & "%)"
End If
End Sub
Function priceCalc(a As Long, Optional b As Variant) As Long
If IsMissing(b) Then '引数bが省略ならTrueです
priceCalc = a
Else
priceCalc = a - (a * b / 100)
End If
End Function
コードを実行時に表示される InputBox です。初めに対象の金額を入力、二つ目で割引率を入力します。
引数がある場合のメッセージと引数が省略された場合のメッセージです。
IsMissingr関数サンプル2 (Subプロシージャの例)
省略可能な引数を設定したSubプロシージャ内で IsMissing 関数を使った例です。
引数を設定した場合と引数を省略した場合の両方を表示します。
'■IsMissing関数サンプル2 (Subプロシージャの例)
Sub IsMissing_Sample02()
Call IsMissingProc("これが引数です!")
Call IsMissingProc
End Sub
Sub IsMissingProc(Optional param As Variant)
If IsMissing(param) Then
MsgBox "引数は省略されています!"
Else
MsgBox "引数の値: " & param
End If
End Sub
Subプロシージャの引数に「”これが引数です!”」を指定して引き渡す例と、引数を省略する例です。
呼び出したSubプロシージャ側で、引数の有無によってメッセージの表示を分けているだけの単純な例ですね。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA IsMissing 関数は、プロシージャに省略可能なバリアント型引数が渡されたかどうかを判定し結果を Boolean値で返します。渡されていない(省略されている)場合が True で、渡されている場合 False です。
IsMissing 関数を使用することによって、プロシージャや関数の柔軟性が向上します。ユーザー入力を検証したり、デフォルト値を設定するなどが容易になります。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;