ExcelマクロVBA関数
IsMissing関数

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

IsMissing関数


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



IsMissing関数

IsMissing(argname)


引数 argname は必ず指定します。

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


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

IsMissing 関数がある引数に対して真 (True) を返すときに、その引数を他のコード内で使うと、ユーザー定義エラーが発生することがあります。
キーワード ParamArray を指定した引数に IsMissing 関数を使うと、常に偽 (False) が返されます。
キーワード ParamArray を指定した引数が空であるかどうかを調べるには、配列の上限が下限よりも小さいかどうかをテストします。

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は、実務では使う意味は特にありません。
特定の初期値を指定しておき、それで判定した方が良いからです。

※VBA関数一覧

ExcelマクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。エクセルの各種一覧、Excelリファレンス




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

Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)

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

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




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


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






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

    本文下部へ