VB6/VBA には変数が配列かどうかを調べる関数(IsArray)はありますが、配列が空かどうかを調べる関数はありません。ですので、配列が空かどうかを調べるには、自作の関数を実装する必要があります。
IsArray() 関数に空の配列チェックを追加した自作関数は以下になります。
構文 |
IsArrayEx(varname) |
機能 |
引数が配列かどうかを判定し、配列であった場合は空かどうかも判定します。 |
引数 |
引数 | 省略 | 説明 |
varname |
不可 |
有効な任意の式を指定します。 |
|
戻り値 |
長整数型(Long)
戻り値 | 説明 |
1 |
配列 |
0 |
空の配列 |
-1 |
配列じゃない |
|
【実装関数】
'***********************************************************
' 機能 : 引数が配列か判定し、配列の場合は空かどうかも判定する
' 引数 : varArray 配列
' 戻り値 : 判定結果(1:配列/0:空の配列/-1:配列じゃない)
'***********************************************************
Public Function IsArrayEx(varArray As Variant) As Long
On Error GoTo ERROR_
If IsArray(varArray) Then
IsArrayEx = IIf(UBound(varArray) >= 0, 1, 0)
Else
IsArrayEx = -1
End If
Exit Function
ERROR_:
If Err.Number = 9 Then
IsArrayEx = 0
End If
End Function
【使用例】
Public Sub sample()
Dim strArray() As String
Select Case IsArrayEx(strArray)
Case 1
Debug.Print "strArrayは配列です。"
Case 0
Debug.Print "strArrayは空の配列です。"
Case -1
Debug.Print "strArrayは配列ではありません。"
End Select
End Sub
上記使用例では strArray 変数が空の配列であるため、「atrArrayは空の配列です。」と表示されます。