【VBA】配列の中身が空であるのを判定する

VBA

配列に特定の要素が何番目に含まれるかをチェックする

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 空でない)