Home » エクセルマクロ・Excel VBAの使い方 » 配列 » VBAで変数が配列かどうかを判定する-IsArray関数

VBAで変数が配列かどうかを判定する-IsArray関数

対象:Excel2007, Excel2010, Excel2013

VBAで変数が配列かどうかを判定する-IsArray関数

「vba 変数が配列になっているか判定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)では、変数をVariant型で宣言しておいて、後からデータを一気に格納することで配列にするということが、結構行われます。

そのような処理の含まれるプロシージャを作っているときに、変数が配列になっているかどうかを判定するにはどうしたらいいのか探していらしたのでしょう。

[スポンサードリンク]

IsArray関数で配列かどうかを判定するサンプルマクロ

結論からいうと、VBAではIsArray関数で配列かどうかを判定することができます。

IsArray関数は、引数に指定された変数が配列ならばTrueを、配列でなければFalseを返してきます。

以下のマクロを実行してIsArray関数の動きを確認しておくことをおすすめします。

Sub 配列かどうかを判定する()

 Dim arr As Variant
 Dim bln As Boolean

 bln = IsArray(arr)
 Stop

 arr = Array("a", "b", "c")
 bln = IsArray(arr)
 Stop

End Sub

サンプルマクロの解説

VBE(Visual Basic Editor)のメニュー[表示]-[ローカルウィンドウ]から、ローカルウィンドウを表示して上記のマクロを実行してみてください。

一つ目のStop文でステップ実行モードになったところで、ローカルウィンドウを確認すると下図のような状態になっているはずです。

VBAで変数が配列かどうかを判定する-IsArray関数

変数・arrは、まだ宣言されただけですから、バリアント型の変数のままで、IsArray関数の結果の代入されている変数・blnはFalseです。

上記の状態を確認してから[F5]キーでSubプロシージャの実行を継続すると二つ目のStop文で再度ステップ実行モードになります。

この時点で、ローカルウィンドウを確認すると今度は下図のような状態になっているはずです。

VBAで変数が配列かどうかを判定する-IsArray関数

変数・arrは、
 arr = Array("a", "b", "c")
の行が実行されたことで配列変数になって各要素にデータが格納され、IsArray関数の結果の代入されている変数・blnはTrueになっています。

判定用の関数はIs○○という名前のことが多い

ちなみに、VBAに限らずプログラミング言語では、何らかの判定を行う関数やメソッドは、Is○○という名前になっていることが少なくありません。

VBAの場合は、オブジェクトブラウザー等で確認するとわかるとおり、Informationモジュールに下図のような、Is○○という名前の関数が用意されています。

VBAで変数が配列かどうかを判定する-IsArray関数

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » VBAで変数が配列かどうかを判定する-IsArray関数

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.