「VBAだんだん覚えてきたけど、配列ってどうすればいいの?」
VBA配列をやるときは宣言のしかたと配列処理が2パターンあるよ。

さて、じゃあVBA配列について話していこうか。

VBA配列の基本的な書きかた【宣言のしかた】

VBAの配列には基本的に下記の2種類あって、『Variant型』で使えるよ。

  1. VBA静的配列の書きかた
  2. VBA動的配列の書きかた

そしたら、下記でくわしくしていこうか。

VBA静的配列の書きかた

VBAで静的配列を書くときは下記の感じ。

Dim Persons(10) As Variant

Dimで宣言して名前に()をつけて必要な配列数をいれよう
上記のコードだと『0~10』までの配列ができる。

でも『0~10』だと11個配列があるから計算ちょっとめんどくさいよね。
最初の配列範囲を変えたいとき(たとえば1~10)は下記のようにすればOK。

Dim Persons(1 To 10) As Variant

VBA動的配列の書きかた

動的配列はDimで一旦宣言したあとに『ReDim』というので宣言し直してる書きかただよ。

Dim Persons() As Variant
ReDim Persons(10)

ReDimする意味は、なんかいでも配列の数を変更できるから。

上記コードだと11個の配列だけど、宣言したあとでも下記のようにすることもできる。

ReDim Persons(20)

そうすると今度は21個の配列に変更できるってわけ。

ReDimでなんかいも配列の数を変更できるから動的ってこと。

VBA配列が作れてるか確認する方法

VBAの配列ができてるのか確認したいときは『ローカルウィンドウ』を開いて『F8』でステップインしていけばOK。

まずは下記のコードを書いてみよう。

Sub ArrayCheck()

    Dim Persons(10) As Variant

End Sub

コードが書けたら右上の『表示』→『ローカルウィンドウ』でローカルウィンドウを出してみようか。

上記のSub内で『F8』を押せば下記の画像みたいに配列が表示されるよ。
VBAの配列がホントにできてるのか確認する方法

VBAで配列処理をする【2パターンでOK】

さて、ここからは動的配列でやっていくよ。
配列処理をするときは基本2パターンでOK。

  1. Arrayを使って配列にする
  2. Splitを使って配列にする

ちなみに、下記のように直接配列の場所を指定する方法もあるよ。

Persons(2) = "鈴木"

そしたら配列処理の2パターンを話していこうか。

配列処理パターン1. Arrayを使って配列にする

Sub TestArray()

    Dim Persons() As Variant
    Persons = Array("江崎", "鈴木", "齋藤", "中村", "伊藤", "黒木")
    
    Dim i As Long
    For i = LBound(Persons) To UBound(Persons)
        Cells(1 + i, 1) = Persons(i)
    Next i
    
End Sub

Arrayを使うときは基本的に『,』で区切って文字か数字を入れればOK。

LBound()配列の開始がどこの数値(インデックス)か調べる
UBound()配列の最後がどこの数値(インデックス)か調べる

配列処理パターン2. Splitを使って配列にする

Sub TestSplit()

    Dim Persons() As String
    Persons = Split("江崎,鈴木,齋藤,中村,伊藤,黒木", ",")
    
    Dim i As Long
    For i = LBound(Persons) To UBound(Persons)
        Cells(1 + i, 1) = Persons(i)
    Next i

End Sub

Split(データ, データの区切り位置)って感じで書けばOK。

データのところは『""』でひとくくり囲むこと、下記みたいに。

Numbers = Split("5,6,8,9,11,54,88", ",")

ちなみに、SplitはString型でもLong型でも使えるから、実用的なのはArrayよりSplitだね。

配列処理ができるようになって中級者になろう

基本Splitを使っていこう。
VBAで配列処理ができればコーディングの幅もかなり上がるし、応用すれば処理が早いコードが書けるようになるよ。

使いこなして中級者になろう。

人気記事【必読】"見やすく修正しやすいコード"につながる本『リーダブルコード』

関連キーワード