2016-01-20
ExcelVBA覚書 IsMissing関数
Optionalで指定した引数は省略可能だが、設定されて呼び出されているかどうかを確認する関数がIsMissingだそう。
しかしながら、この変数の型がVarient型のときにしか機能しないというお粗末もの。
Private Sub Test (Optional a As Varient) If Not IsMissing(a) Then '設定されているとき Else '設定されていないときのロジック End If End Sub
下のようにLong型にすると、a=0と判断されてしまうので×。
Private Sub Test (Optional a As Long) If Not IsMissing(a) Then '全部こちらに入ってしまう Else 'こっちに来ない End If End Sub
ということで、省略時の初期値を設定しておき、条件分岐をする。
Private Sub Test (Optional a As Long = -1) If a>0 Then '省略されていないとき Else '省略されたとき End If End Sub