はじめに
Excel VABでの値の空判定は結構複雑で、IsEmptyやIsNullなどケースによって使い分ける必要があります。
ここでは、C#等でよく利用するIsNullOrEmpty関数を再現しました。
サンプルコード
Function IsNullOrEmpty(ByVal value)
If IsEmpty(value) = True Then
IsNullOrEmpty = True
Else
If IsNull(value) = True Then
IsNullOrEmpty = True
Else
If value = "" Then
IsNullOrEmpty = True
Else
IsNullOrEmpty = False
End If
End IF
End If
End Function
使い方
Dim val1 as String
Dim val2 as String
val1 = "Sample"
val2 = ""
Debug.Print IsNullOrEmpty(val1)
Debug.Print IsNullOrEmpty(val2)
False
True
セルの値を取得した場合に、セルには何も記入していないのに、IsEmptyだけだと、値があると判断されたりするので、こんサンプルであれば、ほぼ全てに対応できちゃうかと思います。
補足
IsEmpty
IsEmpty(expression)は、引数expressionに、Empty値かどうかを判定するバリアント型の変数を指定します。
引数expressionで指定したバリアント型変数がEmpty値である場合Trueを返します。Empty値でない場合はFalseを返します。
例
Sub Sample()
Dim a As Variant
Debug.Print IsEmpty(a) 'Trueを返します
a = 123
Debug.Print IsEmpty(a) 'Falseを返します
a = "sample"
Debug.Print IsEmpty(a) 'Falseを返します
End Sub
IsNull
IsNull(expression)は、引数expresionに、数式または文字列式を含むバリアント型の式を指定します。
Null値とはバリアント型の変数に格納できる特殊な値であり、変数内に有効な値が入っていないことを意味します。
Null値は、変数が初期化されていない状態を表すEmpty値や、長さ0の文字列を表すNull文字列とは異なります。
Sub Sample()
Dim a As Variant
Debug.Print IsNull(a) 'Falseを表示します
a = ""
Debug.Print IsNull(a) 'Falseを表示します
a = Null
Debug.Print IsNull(a) 'Trueを表示します
End Sub
長さ0の文字列(””)
文字を1つも含まない文字列 (“”) です。
「長さ0の文字列」は、Len関数やLenB関数の引数に指定すると0を返します。
Sub Sample()
Dim a As String
a = ""
Debug.Print Len(a) '0 と表示されます
End Sub
最後に
VBAでは結構判定処理が面倒なので、一度関数化して呼び出していった方が効率が良い!
是非試してみてください