あーるPG - 社会人のデジタル生活

日曜プログラマになろうかなーと思った30代理系社会人の、キャリアアップや趣味(特にデジタル情報)の記録。らーめんとビールが好き。

動的配列を使う

動的配列の使い方

VBAで配列を使うとき、サイズを後から変更できる”動的配列”というものがあります。
ただ、ちょっと癖があるので、慣れが必要です。
VBAといえばCollectionなのですが、簡単に使えるかな、というイメージがある人はどうぞ。

'初期化
Dim arr1() As Integer ' ()内を空欄で定義。
' 配列数の指定(中身をクリア)
ReDim arr1(0) ' ReDimで配列数を指定。arr(0)のみある。
ReDim arr1(1 TO 2) ' 要素の範囲を指定できる。これならarr1(1), arr1(2)になる

' 要素を全部使う
Dim str As String
srt = ""
For i = LBound(arr1) To UBound(arr1) ' LBound()で取得できる要素番号の最小値、UBound()で最大値を取得できる。
srt = str & arr1(i) & Chr(13)
Next i

' 配列の追加(中身を保持)
ReDim Preserve arr1(UBound(arr1) + 1) ' Preserve指定で中身を保持。

' 未初期化状態への対処
Dim arr2() As Integer
' ReDim Preserve arr2(UBound(arr2) + 1) ' ReDimしないでUBound()すると、エラーが出る

If Sgn(arr2) = 0 Then 'なぜかSgn()関数で判別できるのでそれを使うか
ReDim arr2(0)
Else
ReDim Preserve WarnList(UBound(arr2) + 1)
End If

For i = LBound(arr2) To UBound(arr2) -1 ' 配列の最後尾が番犬だと思って要素使用時に排除するか。
srt = str & arr2(i) & Chr(13)
Next i