Variant型変数を使わずに配列を初期化する


初期値を持つ配列を定義する場合、例えばJavaでは下記のように宣言が出来ます。

	String[] sample = {"A", "B", "C"};

ではVBA(Excelマクロ)でこれをやろうとするとどうなるでしょうか?

	Dim sample As Variant
	sample = Array("A", "B", "C")

このように、Array関数を利用することで似たようなことが出来るのですが、Array関数には欠点があります。 そう、Variant型で変数を定義する必要があるということです。 例えば、ごく自然に見える下記のコードはエラーになってしまいます。

	Dim sample() As String
	sample = Array("A", "B", "C")  '// ここでエラー発生(型が一致しません)

Variant型の使用が常に悪いということはありませんが、 明らかにStringの配列である変数をVariantで宣言しなければならないというのは、 可読性の観点からも好ましくありません。

かと言って下記のように一つずつ初期化していくのも面倒です。

    Dim sample(3) As String
    sample(0) = "A"
    sample(1) = "B"
    sample(2) = "C"

こういう場合はSplit関数を使うとうまいこと行きます。

    Dim sample() As String
    sample = Split("A,B,C", ",")

Split関数はString配列型の結果を返します。これを利用して初期化するというわけです。


宮野 清隆株式会社シスデイズ代表取締役社長
プロジェクトマネージャ・アプリケーションエンジニア・テクニカルエンジニアなど、
多数の高度情報処理資格を保有するITのスペシャリスト。2008年にシスデイズを設立し、代表に就任。
2012年より上位2%のIQを保有するものだけが参加できる団体「JAPAN MENSA」に所属。
2014年よりJAPAN MENSA財務担当、2016年よりJAPAN MENSA副会長に就任。
お問い合わせ

同じカテゴリの記事