ExcelマクロVBA関数
IsMissing関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
最終更新日:2019-10-07

IsMissing関数


プロシージャを呼び出すときに省略可能なバリアント型 (Variant) の引数がプロシージャに渡されたかどうかを調べるために使用します。



IsMissing関数

IsMissing(argname)

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

指定した引数が渡されていない場合は、真 (True) を返します。
それ以外は、偽 (False) を返します。

IsMissing関数がある引数に対して真(True)を返すとき、つまり引数が省略されている場合は、
その引数を他のコード内で使うと、ユーザー定義エラーが発生することがあります。


キーワード ParamArray を指定した引数に IsMissing 関数を使うと、常に偽 (False) が返されます。
キーワード ParamArray を指定した引数が空であるかどうかを調べるには、配列の上限が下限よりも小さいかどうかをテストします。
VBAリファレンスには、上記のように書かれていますが、
IsMissing関数は、ParamArray引数が渡されていない場合はTrue、渡された場合はFalseを返します。

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

使用例.

Sub sample()
  Call sample2("引数")
  Call sample2
  Call sample3
End Sub

Sub sample2(Optional sMsg = "初期値")
  MsgBox sMsg
End Sub

Sub sample3(Optional sMsg)
  If IsMissing(sMsg) Then
    sMsg = "省略"
  End If
  MsgBox sMsg
End Sub




sample2では、初期値を指定していますので、
Callで省略されたときは、その初期値を受け取ることになります。

sample3では、初期値を指定していないので、
IsMissing関数で、引数が省略されているかどうかを判定しています。

上記の実行結果は、
引数
初期値
省略
この順に、メッセージボッスに出力されます。

初期値を省略したOptionalは、実務では必ずしも使う必要性はありません。
特定の初期値を指定しておき、それで判定した方が良いからです。
何より、Variant型でしかほとんど意味を持たない為、使用する機会は少なくなります。

※VBA関数一覧

VBA関数の一覧と解説ですどんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 型変換…14 データ判定…11 日付時刻…20 配列…7 ファイル操作…14 数学/財務…28 その他…19 MicrosoftDocsOfficeVBARefer…



新着記事NEW ・・・新着記事一覧を見る

VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行番号を取得できるErl関数|VBA技術解説(10月12日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)
VBEの使い方:ウォッチ ウィンドウ|VBA入門(10月4日)
VBEの使い方:ローカル ウィンドウ|VBA入門(10月3日)
VBEの使い方:イミディエイト ウィンドウ|VBA入門(10月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ