配列に特定の要素が何番目に含まれるかをチェックする
VBAで配列の中身が空であるのを判定する関数です。配列の中で1つでも値が入っていたら、「空でない」と判定します。文字、数値、日付などの配列にも対応。
'=========================================================
'[概 要] 配列が空かどうかを判定する関数
'[引 数] arr : チェック対象の配列
'[戻り値] True:空、False:空でない
'[備 考] 一つでも空でないものがある場合、「空でない」とみなす
'=========================================================
Function CheckArrayEmpty(arr As Variant) As Boolean
If IsArray(arr) Then
' 配列が有効な場合
Dim i As Long
For i = LBound(arr) To UBound(arr)
If (IsEmpty(arr(i)) Or IsNull(arr(i)) Or (VarType(arr(i)) = vbString And Len(arr(i)) = 0)) = False Then
CheckArrayEmpty = False '空でない
Exit Function
End If
Next i
CheckArrayEmpty = True '空
Else
CheckArrayEmpty = True '空
End If
End Function
'テスト実行
Dim testArr(2) As Variant
'値セットなし
Debug.Print CheckArrayEmpty(testArr) '結果:(True 空)
'すべてNull
testArr(0) = Null
testArr(1) = Null
testArr(2) = Null
Debug.Print CheckArrayEmpty(testArr) '結果:(True 空)
'文字列:一部に値をセット
testArr(0) = "a"
Debug.Print CheckArrayEmpty(testArr) '結果:(False 空でない)
'文字列:間に値をセット
testArr(0) = "a"
testArr(1) = ""
testArr(2) = "c"
Debug.Print CheckArrayEmpty(testArr) '結果:(False 空でない)
'数値:一部に値をセット
testArr(0) = 1
Debug.Print CheckArrayEmpty(testArr) '結果:(False 空でない)
'数値:間に値をセット
testArr(0) = 1
testArr(1) = Null
testArr(2) = 3
Debug.Print CheckArrayEmpty(testArr) '結果:(False 空でない)
'日付:一部に値をセット
testArr(0) = Now()
Debug.Print CheckArrayEmpty(testArr) '結果:(False 空でない)
'日付:間に値をセット
testArr(0) = Now()
testArr(1) = Null
testArr(2) = DateAdd("d", 1, Now())
Debug.Print CheckArrayEmpty(testArr) '結果:(False 空でない)