【中級】VBAで配列を覚えて配列処理をしよう【圧倒的なレベルUP】

VBAの配列を覚えれば...

  • 3秒でシートをまとめて印刷できたり
  • VBAの処理速度を通常の3倍に上げられたり
  • VBAコードが短くなって単純な処理でコードが書けたり

色んなことができるようになる。さて、さっそくVBA配列について話していきます。

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

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

VBAの配列には基本的にこの2種類を使うことですね。

下記で書きかたを順に解説していきます。

1. 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 Persons() As Variant
ReDim Persons(10)
  • Dimで一旦宣言したあと
  • ReDim』というので宣言し直してる

上記コードだと11個の配列がつくれる。

だけど、宣言したあとでも次のようにすることも可能。

ReDim Persons(20)

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

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

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

Sub ArrayCheck()

    Dim Persons(10) As Variant

End Sub

コードが書けたら

  1. エディタ右上の「表示」選択
  2. 「ローカルウィンドウ」でローカルウィンドウを出してみよう

上記の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で配列処理ができればコーディングの幅もかなり上がる。

応用すれば処理が早いコードが書けるようになるよ。

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

・もっとVBA学びたい人向け記事↓

あなた向け今まさに「きれいなコードを書かなくちゃ...」と考えているあなたへ。