本ページには広告が含まれています。

ExcelVBA IsMissing関数 引数の省略を判定する

ExcelVBA IsMissing関数 引数の省略を判定する

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 です。初めに対象の金額を入力、二つ目で割引率を入力します。

IsMissing_Sample01 金額入力用InputBox
IsMissing_Sample01 割引率入力用InputBox

引数がある場合のメッセージと引数が省略された場合のメッセージです。

IsMissing_Sample01 引数がある場合の結果表示のMsgBox
IsMissing_Sample01 引数省略の結果表示のMsgBox

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プロシージャの引数に「”これが引数です!”」を指定して引き渡す例と、引数を省略する例です。

IsMissing_Sample02 引数がある場合のMsgBox
IsMissing_Sample02 引数省略時のMsgBox

呼び出したSubプロシージャ側で、引数の有無によってメッセージの表示を分けているだけの単純な例ですね。

おわりに

Excel VBA IsMissing 関数は、プロシージャに省略可能なバリアント型引数が渡されたかどうかを判定し結果を Boolean値で返します。渡されていない(省略されている)場合が True で、渡されている場合 False です。

IsMissing 関数を使用することによって、プロシージャや関数の柔軟性が向上します。ユーザー入力を検証したり、デフォルト値を設定するなどが容易になります。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!