VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
Update 2018/12/03
< Prev Tips
Next Tips>
1つ前の記事で説明した配列は正確には1次元配列です。
ここでは、2次元以上の配列について説明します。
配列は、宣言時に要素数を指定しないで宣言をすることができます。
要素数を指定しないで宣言をした配列は、値を入れる場所を持っていませんので、リサイズして要素数を指定します。
このような配列を動的配列と呼びます。
配列をリサイズする場合は以下の書式を使用します。
ReDim 配列変数名(段の数 - 1, 要素数 - 1) As データ型
以下は、Integer型の配列dataを要素数3個でリサイズする例です。
Option Explicit
Sub 配列のリサイズ1()
Dim data() As Integer
ReDim data(2)
data(0) = 1
data(1) = 2
data(2) = 3
End Sub
すでに要素が入っている配列のリサイズも ReDim を使用します。
単純に ReDim を使用して配列をリサイズすると、もともと入っていたデータは消えてしまいますので注意してください。
Dim 配列変数名(要素数)
以下は、Integer型の配列dataを要素数3個でリサイズする例です。
Option Explicit
Sub 配列のリサイズ例2()
Dim data() As Integer
Dim i As Integer
'要素数が3個の配列にリサイズ
ReDim data(2)
data(0) = 1
data(1) = 2
data(2) = 3
'要素数が5個の配列にリサイズ
'配列に入れていた1,2,3のデータは消えてしまう
ReDim data(4)
For i = LBound(data) To UBound(data)
Debug.Print data(i)
Next
End Sub
ReDim でリサイズすると元のデータが消えてしまうことがわかりました。
「ReDim Preserve」を使用すると、もとのデータを残してリサイズすることができます。
もとのサイズよりも大きくした場合は、後ろの要素には初期値が入ります。Integer型であれば0が入ります。
もとのサイズよりも小さくした場合は、後ろの方から要素が切り捨てられます。
以下に、「ReDim Preserve」を使用した例を示します。
Option Explicit
Sub 配列のリサイズ例3()
Dim data() As Integer
Dim i As Integer
'要素数が3個の配列にリサイズ
ReDim data(2)
data(0) = 1
data(1) = 2
data(2) = 3
'要素数が5個の配列にリサイズ
'配列の要素は 1, 2, 3, 0, 0 となる
ReDim Preserve data(4)
For i = LBound(data) To UBound(data)
Debug.Print data(i)
Next
'要素数が2個の配列にリサイズ
'配列の要素は 1, 2 となる
ReDim Preserve data(1)
For i = LBound(data) To UBound(data)
Debug.Print data(i)
Next
End Sub