
『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。
仕事の改善や個人的な知識向上に役立ててください(^o^)
第19回目の今回は
VBAで使用する【配列変数】
について解説していきますので、よろしくお願いします。
前回までのVBAに関するINDEXは下記を参照してくださいね。
↓サブログ内部リンク(VBA用INDEX)↓
-
-
目次
Excel VBA講座-目次(INDEX)
サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...
続きを見る
「配列変数」について
配列、配列変数とは、変数の1種で同じ種類の複数のデータをまとめて格納する変数です。通常の変数は、一般的に【箱のようなもの】にたとえられることが多く、その箱には1つのものしか格納できません。(変数についてはだ下記内部リンク先の講座を参照してくださいね)
【エクセルVBAの勉強】#3 変数を利用して劇的改善 !!【初心者向け】
配列に格納された各々のデータを「要素」といい、インデックス番号(要素番号)を指定することにより格納されたデータを使用することができます。
変数を一戸建てと考えると、配列変数はアパートやマンションに例えると分かりやすいです。配列名が住所、インデックス番号(各々の箱の番号)が部屋番号といったイメージです。
「配列の宣言」について
配列を宣言するにはまず、
『Dim+変数名+(**)+As+型名を指』定します。(**には配列のインデックス番号の上限値が入ります。
ここで重要なのは、配列は"0"から始まるというのを覚えておかないといけません。(深く考えずにそういうものと理解する)
もしインデックス番号と要素数が異なるのがわかりにくい場合は、モジュールの先頭に下記のように宣言すればよいです。
Option Base 1
Sub・・・・
・・・・
End Sub
※Option Baseステートメントで指定できるのは、"0"か"1"のみです。
「静的配列」について
配列の要素数の上限値を指定して宣言した配列を「静的配列」と呼ばれます。
Dim 静的配列(4) As String’静的(0~4)の5つの要素を含む配列2(最小と最大のインデックス数指定でも宣言可能)
Dim 静的配列(0 To 4) As String'上と同じ意味を持つ変数を作った場合
Dim 文字0 As String
Dim 文字1 As String
Dim 文字2 As String
Dim 文字3 As String
Dim 文字4 As String
静的配列で宣言した場合は、後から要素数の変更ができないので要注意です。
「動的配列」について
後で配列の要素数を指定して宣言した配列を「動的配列」と呼ばれます。
下記にコードの例を記載します。
'配列のインデックス番号開始位置を"1"とする。(0⇨1に変更)
Option Base 1Sub 動的配列例()
'配列変数を"String型"で宣言
Dim sample() As String
'変数"row1"を"Integer型"で宣言
Dim row1 As Integer
'変数"a"を"Integer型"で宣言
Dim a As Integer
'A列の最終行を抽出し、それから1引いた値を"row1"とする
row1 = Range("A1").End(xlDown).Row - 1
'配列変数"sample"の上限値を”row1”の値とする
ReDim sample(row1)
'変数aの値に1~row1の値を順番に代入し、Nextまでの処理を繰り返す
For a = 1 To row1
'セルA2~A5(最終行)までの値を配列変数"sample"に格納する。
sample(a) = Cells(a + 1, 1).Value
'For aに戻って繰り返し処理
Next a
'変数aの値に1~row1の値を順番に代入し、Nextまでの処理を繰り返す
For a = 1 To row1
'配列変数に格納した値を、セルC2~C5に入力する。
Cells(a + 1, 3).Value = sample(a)
'For aに戻って繰り返し処理
Next a
'マクロの終了
End Sub
マクロを実行すると・・・

下のVBA講座も是非ご覧下さい!!
関連
前回のVBA講座(第18回)
シートの検索・抽出方法を覚えよう!【VBA入門講座#18】
関連
次回のVBA講座(第20回)