VBA

コピペ有!配列(静的配列と動的配列)の基本。実務は動的配列一択

記事内に商品プロモーションを含む場合があります

このページでわかること

配列の基本的な操作方法がわかります。

まずは動的配列を使いましょう。
コピペ例文あります!

覚えること

  1. 静的配列(最初に入れる要素数を決める)
    Dim 配列名(要素数-1) As データ型
  2. 動的配列(後から要素数を変更する)
    Dim 配列名() As variant

配列は難しい、でも覚える価値はある

配列は基本ムズイです。
僕も最初敬遠してました。
そして使わなくても何とかなるといえば何とかなります。

ただ、使えたほうがいいです(当たり前)

  • 基本いろんな手法は知るべき
  • コード量が少なくなる
  • VBE上で処理が終わる(エクセルに書いたり消したりしなくていい)

全ての機能をフルには使わない。

知っておいた方がいいと思いますが、
先ずは実務で使いやすいところから覚えていくでいいんじゃないでしょうか。

動的配列で要素を格納し、それを一つずつ取り出す

がおすすめです。

静的配列

最初に要素数(配列に入れる項目の数)を決めちゃいます。

Dim 配列名(要素数-1) As データ型

なぜ要素数-1にするかというと
配列は0、1、2、3と順番に入れていくためです。
つまり、最初の配列は 配列名(0) となります。

簡単なコードを見ましょう

Sub 静的配列()

'要素数3-1=2を()に入れる
Dim Arrs(2) As String
Arrs(0) = "リンゴ"
Arrs(1) = "バナナ"
Arrs(2) = "リンゴ"

'For each文で配列の要素を全て取り出す
Dim arr As Variant
For Each arr In Arrs()
    Debug.Print arr
Next
End Sub

注意すべき点です

  • 配列には同じ値をいれても大丈夫。
  • イメージ的には空っぽの要素が最初に入り、後から要素を格納していく感じです。
    →つまり要素を入れないと
      →データ型がString:文字数0の文字列
      →データ型がInteger:0
    となります。
  • 最初に決めた要素数以上は入れるとエラー(入れる方法は後ほど)

動的配列(実務で使用,コピペOK)

こちらは要素数を最初に決めません。後から決めます。
私の実務経験から言うとこちらを圧倒的に使います。

構文:Dim 配列名() As Variant
Sub 動的配列()

'======================================================
'動的配列にArray関数で入れるにはVariant型にする。
'Array関数に入れたい要素を入れてください
'======================================================
Dim Arrs() As Variant
Arrs() = Array("リンゴ", "バナナ", "リンゴ")

'============================================================
'For each文で配列の要素を全て取り出す
'Debug.Printは不要です。処理したいコードをここに入れてください
'============================================================
Dim Arr As Variant
For Each Arr In Arrs()
    Debug.Print Arr
Next

End Sub

以下の二つの手法で成り立っています。
どちらも使えるようになるとかなりコードすっきりします。

Array関数を使っていっきに代入する方法

For each文を使ってひとつひとつ取り出す方法
こちらは変数をVariant型で宣言してください。
要素がString型でもStringで宣言するとエラーを起こします。

まとめ

いかがでしょうか。

配列は奥が深く、他にもいろんな機能があります。
でも、まずは今回のような動的配列を覚え、
そこからさらにいろいろな知識を広げるのがおすすめです。

次回はさらに実務で使える配列の再宣言についてご紹介します。

ではでは