構文
IsArray(varname)
| 引数 | varname | 配列かどうか調べる変数を指定 |
| 戻り値 | 配列 | TRUE |
| 配列以外 | FALSE |
IsArray関数で配列かどうか調べるサンプルコード
'■IsArray関数で配列かどうか調べる
Public Sub sample_Array_IsArray()
Dim arr1 As Variant
Dim arr2() As String '動的配列
Dim arr3(10) As Long '静的配列
Dim arr4(10, 1) As Long '静的2次元配列
'■値がなくても配列の枠があればTrue
MsgBox IsArray(arr1) '配列ではない為False
MsgBox IsArray(arr2) '動的配列もTrue
MsgBox IsArray(arr3) '静的配列もTrue
MsgBox IsArray(arr4) '二次元配列もTrue
ReDim arr2(2)
arr1 = "TEST"
arr2(0) = "TEST"
arr3(0) = 12345
arr4(0, 0) = 12345
'■値がある場合
MsgBox IsArray(arr1) 'False
MsgBox IsArray(arr2) 'True
MsgBox IsArray(arr3) 'True
MsgBox IsArray(arr4) 'True
End Sub
その他
Excelマクロでは、あまりisArray関数は使用しないと考えます。
■理由
コードを書く本人が、配列を使うかどうかは明示的に使い分けているため、
IsArray関数を使って配列かどうかの判定が必要ないためです。無理やり使用するとなると、Variant型の変数で条件によって
配列、もしくは通常変数と切り分けるくらいでしょうか。そういった使い方はあまりしないでしょう。
コードを書く本人が、配列を使うかどうかは明示的に使い分けているため、
IsArray関数を使って配列かどうかの判定が必要ないためです。無理やり使用するとなると、Variant型の変数で条件によって
配列、もしくは通常変数と切り分けるくらいでしょうか。そういった使い方はあまりしないでしょう。
VBAで配列の判定をする場合は「配列かどうか」ではなく「動的配列の要素数がいくつなのか」もしくは「配列が空なのかどうか」を判断するケースが多いと考えます。
以下の関連記事を参考にどうぞ。
関連記事
一次元/二次元配列が空かどうか判定する【ExcelVBA】
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
「二次元配列を動的に行数(一次元目)を増やす」をパーツ化する【ExcelVBA】



コメント