【中級】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学びたい人向け記事↓

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

事務作業を自動化してもっと"ラク"しませんか?

あなたの会社の事務作業...効率化してラクに。もっと重要な業務に集中できるようになります。

日々増えるルーティンの事務作業...
「この作業めんどくさい...」
「事務作業に時間をとられて他に集中できない...」

あなたの代わりにVBAを使ってパソコン業務を自動化。あなたはもっと価値のあることに時間を使うことができるため売上UP、ムダなコストの削減が期待できます。

また、作って終わりではなくつぎの3つのことを約束します。

  • しっかりドキュメント作成
  • きれいな見やすいコードでムダな工数カット
  • できるだけボタン1つポチッと押すだけで業務が完了

どんなにささいなめんどくさい事務作業でも相談してください。相談は無料です。
3年の業務効率化実績があるため、力になれるかもしれません。

※件名には「業務効率化の相談」と記載ください。できるだけ24時間以内に返信します。