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
かめぞう
はじめまして。 かめぞうです。組込ソフトウェア開発会社に勤務する現役エンジニアをしています。私が買ってよかったもの、人生設計、サラリーマン生活についてなど、テーマを絞らず発信しています。リクエストや改善要望など、お気軽にご連絡ください。