ExcelVBA

配列かどうか調べる【IsArray関数】【ExcelVBA】

構文

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型の変数で条件によって
配列、もしくは通常変数と切り分けるくらいでしょうか。そういった使い方はあまりしないでしょう。

VBAで配列の判定をする場合は「配列かどうか」ではなく「動的配列の要素数がいくつなのか」もしくは「配列が空なのかどうか」を判断するケースが多いと考えます。
以下の関連記事を参考にどうぞ。

関連記事

一次元/二次元配列が空かどうか判定する【ExcelVBA】
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
「二次元配列を動的に行数(一次元目)を増やす」をパーツ化する【ExcelVBA】

コメント

タイトルとURLをコピーしました