Excel VBA

【Excel VBA入門】配列の宣言、使用方法まとめ

本記事の内容

Excel VBAで配列の宣言、使用する方法をご紹介

 

こんな方におすすめ
  • Excel VBAで複数の値を一度に扱いたい方
  • Excel VBAで配列を使用したい方
  • VBA初心者の方

 

配列変数の宣言方法【2次元配列, 動的配列も紹介】

配列変数の宣言方法は下記の通りです。

Dim 変数名(上限値) As データ型名

※上限値は要素数 – 1を指定します(要素数が4の場合は上限値を3に指定する)

 

上記のような1次元方向にN個の要素を持つ配列を

1次元配列

といいます。

 

配列には上記の1次元配列の他に下記のような宣言方法があります。

配列の様々な定義方法

<2次元配列>

2次元方向にN × Nの要素数を持つ配列

 

<動的配列>

要素数を指定せずに宣言する配列

 

2次元配列、動的配列の宣言方法は下記の通りです。

<2次元配列の宣言方法>

Dim 変数名(上限値1, 上限値2) As データ型名

 

<動的配列の宣言方法>

Dim 変数名() As データ型名

 

配列変数への代入方法

配列変数への代入方法は下記の通りです。

<1次元配列への代入>

変数名(インデックス番号) = 格納する値

 

<2次元配列への代入>

変数名(行のインデックス番号, 列のインデックス番号) = 格納する値

 

動的配列に代入を行う際には、要素数を再定義する必要があります。

再定義の方法は下記の通りです。

<要素数の再定義方法>

ReDim 変数名(上限値)

 

<先に代入されている値を保持して再定義する方法>

ReDim Preserve 変数名(上限値)

 

使用例1 : 配列を用いたセルの参照と代入

配列を用いたソースコードの例は下記の通りです。

<サンプルコード>

Sub sample()

    '1次元配列を定義
    Dim values_1(3) As String

    '動的配列を定義
    Dim values_2() As Long
    
    '動的配列の要素数を定義
    Dim num As Long
    num = 5
    
    'ループ用の変数
    Dim i As Long
    
    '動的配列を再定義
    ReDim values_2(num)
    
    'インデックスを指定して配列に値を代入
    values_1(0) = "a"
    values_1(1) = "b"
    values_1(2) = "c"

    'ループを利用して配列を代入
    For i = 0 To num - 1
        values_2(i) = i
    Next i
    
    '配列の中身をセルに出力
    Range("B2:D2").Value = values_1
    Range("B3:F3").Value = values_2
    
End Sub

 

<マクロ実行結果>

 

使用例2 : 2次元配列を用いたセルの参照と代入

2次元配列を用いたソースコードの例は下記の通りです。

<サンプルコード>

Sub sample()

    '2次元配列を定義
    Dim values_1(2, 3) As String

    '動的配列を定義
    Dim values_2() As Long
    
    '動的配列の要素数を定義
    Dim num As Long
    num = 5
    
    'ループ用の変数
    Dim i As Long
    Dim j As Long
    
    '動的配列を再定義
    ReDim values_2(num, num)
    
    'インデックスを指定して配列に値を代入
    values_1(0, 0) = "a"
    values_1(0, 1) = "b"
    values_1(0, 2) = "c"
    values_1(1, 0) = "A"
    values_1(1, 1) = "B"
    values_1(1, 2) = "C"

    'ループを利用して配列を代入
    For i = 0 To num - 1
        For j = 0 To num - 1
            values_2(i, j) = i + j
        Next j
    Next i
    
    '配列の中身をセルに出力
    Range("B2:D3").Value = values_1
    Range("E2:I6").Value = values_2
    
End Sub

 

<マクロ実行結果>

 

以上が配列の宣言、使用方法となります。

ここまでご覧いただきありがとうございました。

 

初心者におすすめの書籍はこちら

 

VBAに詳しくなりたい方におすすめの書籍はこちら

 

 

ABOUT ME
かめぞう
かめぞう
はじめまして。 かめぞうです。ソフトウェア開発会社に勤務する現役エンジニアです。私がエンジニアを続ける中で得た学び、考えを発信しています。リクエストや改善要望など、お気づきの点があればお気軽にご連絡ください。