教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA 関数】IsArray関数を使用した配列かどうかを調べる方法を教えて!

        f:id:m_kbou:20200303140047p:plain

IsArray関数を使用して対象データが配列か否かを判定する方法について説明します。

 

【目次】

 

構文

記述方法は、以下の通りとなります。

=======================================================================

IsArray[変数]

=======================================================================

[説明]:

IsArray関数[変数]に指定したデータが配列か否かを判断して値を返します。結果の返り値として、配列の場合には「True」を返し、配列で無い場合には「False」を返します。内容を纏めると、「[変数]で指定したデータが配列か否かを判断し、True/Falseのいずれかの値を返して下さい。」との意味になります。

[記述例]:

IsArray(範囲)

 

使い方

使い方について、具体的に説明していきます。

指定した変数が配列の場合

指定した変数が配列の場合について説明します。

[記述例①]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()

    Dim 範囲 As Variant
    
    範囲 = Range("A1:B1")

    MsgBox IsArray(範囲)
   
End Sub

-------------------------------------------------

「最初に変数:範囲を定義します。次に変数:範囲にA1セル~B1セルの配列:Range("A1:B1")をセットします。最後にセットした変数:範囲について配列か否かを判断し、結果(True/False)をMsgBoxで表示して下さい。」との意味になります。

[実行例①]:

※指定した変数:範囲が配列のため「True」が表示されます。

f:id:m_kbou:20200303131926p:plain

--------------------------------------------------------------------------------------------------

[記述例②]:

-------------------------------------------------

Sub サンプル()

    If (IsArray(Range("A1:B1")) = True) Then
        MsgBox "配列です。"
    Else
        MsgBox "配列ではありません。"
    End If
   
End Sub

-------------------------------------------------

「Range("A1:B1")が配列か否かを判断し、配列の場合には”配列です。”をMsgBoxで表示し、配列で無い場合には”配列ではありません。”を表示して下さい。」との意味になります。

[実行例②]:

※配列のため「配列です。」が表示されます。

f:id:m_kbou:20200311073859p:plain

指定した変数が配列の場合についての説明は以上です。

 

指定した変数が配列で無い場合

指定した変数が配列で無い場合について説明します。

[記述例①]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()

    Dim 範囲 As Variant
    
    範囲 = Range("A1")

    MsgBox IsArray(範囲)
   
End Sub

-------------------------------------------------

「最初に変数:範囲を定義します。次に変数:範囲に配列で無いA1セルであるRange("A1")をセットします。最後にセットした変数:範囲について配列か否かを判断し、結果(True/False)をMsgBoxで表示して下さい。」との意味になります。

[実行例①]:

※指定した変数:範囲が配列で無いため「False」が表示されます。

f:id:m_kbou:20200303131948p:plain

--------------------------------------------------------------------------------------------------

[記述例②]:

-------------------------------------------------

Sub サンプル()

    If (IsArray(Range("A1")) = True) Then
        MsgBox "配列です。"
    Else
        MsgBox "配列ではありません。"
    End If
   
End Sub

-------------------------------------------------

「Range("A1")が配列か否かを判断し、配列の場合には”配列です。”をMsgBoxで表示し、配列で無い場合には”配列ではありません。”を表示して下さい。」との意味になります。

[実行例②]:

※配列で無いため「配列ではありません。」が表示されます。

f:id:m_kbou:20200311073912p:plain

指定した変数が配列で無い場合についての説明は以上です。

 

おわりに

今回はIsArray関数を使用した配列かどうかを調べる方法について説明しました。類似の内容としてIsNumeric関数を使用した数値として扱えるかどうかを調べる方法IsDate関数を使用した日付や時刻として扱えるかどうかを調べる方法があります。こちらも参考にして下さい。