今回はVBAで用いる配列について説明します。
配列は、一般的な変数と利用方法が似ているようで異なります。
今回はそんな配列について基礎の基礎から説明していきます。
また、配列に関する関数の中でも利用頻度の高い「Split関数」と「Join関数」についても触れていきたいと思います。
それでは早速配列について見ていきましょう!
配列の基礎
複数の値を同時に格納できる変数を配列と呼びます。
配列を利用することで、それぞれの値を順番に処理したり、複数の値を一度に処理することが可能になります。
上手く活用することで、より効率的なプロシージャを作成することができるようになるでしょう。
まずは一般的な変数との違いを抑えてから、配列について学んでいきましょう。
一般的な変数との違い
変数は文字列や数値などの変化する値を格納する箱のイメージです。
ある変数を定義すると一つの箱が発生して、そこに値を入れることができます。
そして一般的な変数の場合、値を入れる場所は一つしかないため、一つの値しか格納できません。
一方、配列は一つの箱の中に複数の収納箇所があるイメージです。
配列を用いる場合は、複数の値を同時に格納することができます。
配列の宣言
同じデータ型の変数を複数利用する場合は、配列変数を使用します。
例えば、VBAで文字列型の配列変数を3つ用意する場合以下のように記述します。
Dim A (2) As String
必要な収納箇所を要素と呼び、収納箇所を識別する番号をインデックス番号と呼びます。
必要とする要素数を配列変数の宣言時に記述することで、1回の宣言で複数の変数を用意できます。
また、この場合の配列変数は、A(0)、A(1)、A(2)の3つです。
インデックス番号は0から始まるので、必要としている収納箇所の数よりも1少ない値を配列変数の宣言時に指定します。
配列変数の宣言
Dim 変数名(要素数-1) As データ型
配列変数を利用したVBAの例
配列を利用して、「トマト」「ニンジン」「ナス」の3つの野菜をMsgBoxに表示するVBAを作成します。
Sub Test1()
Dim A(2) As String
A(0) = "トマト"
A(1) = "ニンジン"
A(2) = "ナス"
MsgBox A(0) & "と" & A(1) & "と" & A(2) & " が苦手です"
End Sub
先程の説明あった通り、Dim A(2)は A(0)、A(1)、A(2) という3つの要素を持つ配列を宣言したことになります。
上の例では、A(0)に「トマト」、A(1)に「ニンジン」、A(2)に「ナス」という文字列を格納しています。
VBAの実行結果は下記の通りです。
配列に関する関数
VBAには配列に関する関数があります。
ここではよく使用されるSplit関数とJoin関数について説明します。
Split関数
Split関数は、引数「元の文字列」に指定した文字列を引数「区切り文字」で区切り、それぞれ分割された文字列を各要素に入れた配列を作成します。
Split ( 元の文字列 , 区切り文字 )
例えば、「東・西・南・北」という元の文字列を区切り文字「・」で分割するとします。
その場合、「東」「西」「南」「北」のそれぞれ分割された文字列が各要素に入れられることになります。
また、作成した配列は、バリアント型の変数に代入します。
配列とバリアント型の変数
Split関数で作成した配列を代入するには、バリアント型で宣言した変数を使用します。
バリアント型は配列を受け取ると、自分自身を必要な要素数を持つ配列変数に変身させます。
以下の例ではセルA1に「東・西・南・北」という文字列が入っていて、それをSplit関数を用いることで区切り文字「・」で分割しています。
そして、分割した結果をセルB1〜B4に反映しています。
Sub Test2()
Dim HOUGAKU As Variant
Dim I As Integer
HOUGAKU = Split(Range("A1"), "・")
For I = 0 To 3
Range("B1").Offset(I, 0) = HOUGAKU(I)
Next I
End Sub
Join関数
Join関数は、配列の各要素を結合して、一つの文字列を作成します。
その際には各要素を結ぶ任意の区切り文字を指定できます。
Join ( 配列の各要素 , 区切り文字 )
例えば、先程のSplit関数の例で分割した配列の各要素「東」「西」「南」「北」を、結合することも可能です。
以下の例では、Split関数で分割した配列の各要素「東」「西」「南」「北」を、区切り文字「、」で結合して一つの文字列を作成します。
そして、結合した文字列をセルC1に代入しています。
Sub Test3()
Dim HOUGAKU As Variant
Dim I As Integer
HOUGAKU = Split(Range("A1"), "・")
For I = 0 To 3
Range("B1").Offset(I, 0) = HOUGAKU(I)
Next I
Range("C1") = Join(HOUGAKU, "、")
End Sub
配列のおさらい
今回は配列の基礎について説明しました。
複数の値を同時に変数に格納したいときには配列を使用します。
配列を活用することで、プロシージャを見やすくシンプルにすることもできそうですね。
また、Split関数とJoin関数を用いることによって、配列の各要素を分割したり結合したりすることができます。
Split関数 | 元の文字列を分割し、各要素に配分する |
Join関数 | 配列の各要素を結合して、一つの文字列を作成する |
配列に関係する関数についての知識があることで、配列をさらに自由自在に使いこなすことが可能になります。
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介
続きを見る