VBA ReDim関数について ~関数の解説と使用例~

VBA ReDim関数について ~関数の解説と使用例~

ENGINEER.CLUB編集部

ENGINEER.CLUB編集部

VBAで一度作成した配列の要素数を処理の途中で変更や追加したいと思ったことはありませんか?ReDim関数では、要素数や次元数の変更など、配列の操作ができます。ここでは、多く使われる処理について説明していきます。

tiktokの配信を見る

1.Redim関数について

1-1.ReDim関数とは

ReDim関数は、動的配列の要素数、次元数を変更できる関数です。

1-2.ReDim関数の構文

ReDim Preserve [変更する変数名]([配列変数の次元数]) AS [変数のデータ型]

引数省略説明
Preserve可能最後の要素数を変更するとき、既存の配列のデータを保持する際に使用されるキーワードです。
[変更する変数名]不可変更したい変数名。
[配列変数の次元数]不可配列変数の次元です。最大 60 までの多次元を宣言できます。
[変数のデータ型]必須変数のデータ型。
Byte、BooleanIntegerLongCurrencySingleDouble、日付、文字列 (可変長文字列の場合)、文字列の長さ (固定長文字列の場合)ObjectVariant、ユーザー定義型、オブジェクト型を指定できます。定義されている変数ごとに個別の As  句を使用します。配列を含む Variant の場合、他の型に変更しません。

2.ReDim関数の使用例

2-1.基本的な使用例

2-1-1.要素数を変更

下記の例では、要素数を定義していない配列Arryを、要素数を5に変更しています。

Sub sample01()
    Dim Arry() As String
    
    ReDim Arry(5)

End Sub

変更前:

変更前1

変更後:

変更後1

2-1-2.次元数を変更

下記の例では、1次元配列Arry2次元配列に変更しています。

Sub sample02()
    Dim Arry As Variant
    
    '配列を作成
    ReDim Arry(2)
    
    '次元を変更
    ReDim Arry(2, 3)

End Sub

変更前:

変更前2

変更後:

変更後2

2-2.特殊な書き方をする場合

2-2-1.配列の中身を保持したまま要素数を変更する

Preserveを使うと、配列の値を保持した状態で要素数を変更できます。

Sub sample03()
    Dim Arry As Variant
    
    '配列を作成
    ReDim Arry(2)
    
    Arry(0) = 0
    Arry(1) = 1
    Arry(2) = 2
    
    '要素数を変更
    ReDim Preserve Arry(3)

End Sub

変更前:

変更前3

変更後:

変更後3


3.ReDim関数の特殊な使い方

3-1.データ型の変更

変更元がVariant型の変数のみ可能

Sub sample04()
    Dim Arry As Variant
    
    'データ型をVariantからStringへ変更
    ReDim Arry(2) As String

End Sub

変更前:

変更前4

変更後:

変更後4

3-2.配列の初期化

要素数を変更することで、配列を初期化することができます。

Sub sample05()
    Dim Arry As Variant
    
    '配列を作成
    ReDim Arry(2)
    
    Arry(0) = 0
    Arry(1) = 1
    Arry(2) = 2
    
    '要素数を変更
    ReDim Arry(3)

End Sub

変更前:

変更前5

変更後:値が初期化されて「Empty 値」になります。

変更後:値が初期化されて「Empty 値」になります

3-3.Preserveを使用する際の注意

3-3-1.変更できる要素数は、下限(一番右側の値)のみ有効

それ以外を変更しようとすると、エラーになります。

Sub sample05()
    Dim Arry As Variant
    
    '配列を作成
    ReDim Arry(2, 3)
    
    '要素数を変更
'    ReDim Preserve Arry(3, 5)     ‘←1つ目の値を変更しているのでエラーが発生
    ReDim Preserve Arry(2, 5)

End Sub

4.最後に

ReDim関数は、配列の要素数や次元を変更するだけではなく、初期化等も行える関数です。うまく利用して、配列を活用していきましょう。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

文系IT未経験歓迎!株式会社ボールドの 採用エントリー を受付中!
文系IT未経験歓迎!
株式会社ボールドの 採用エントリー を受付中!