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