たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_配列その2【動的配列】【配列要素の初期化】

配列の基礎知識について記載、第2回は動的配列および配列変数に格納した値の初期化の方法について

動的配列と静的配列

静的配列:変数の宣言時に要素数が確定している
動的配列:要素数が確定していない、そのため宣言の際には配列の宣言のみを行う

▼静的配列の記述例▼
tama-shi.hatenadiary.com

【ReDim】を使用した動的配列の宣言・要素数の設定

ReDimステートメントを使用し、要素数を設定する
ReDimは何回でも使ってよい、つまり要素数のリセットは何度でも行える
キーワード「Preserve」で、それまで格納していた要素をリセットせずに要素数のみリセットすることも可能

▼構文▼
1.配列のみを宣言:
 Dim 配列変数() As データ型
2.文中での要素数の設定_ReDimのみ:
 ReDim 配列変数(要素数-1)
3.文中での要素数の設定_ReDim + Preserve:
 ReDim Preserve 配列変数(要素数-1)

▼要素数を文中で変更する記述例▼

Sub hairetsu_test()
 Dim hairetsu() As String
 Dim i As Long
 ReDim hairetsu(5)
 For i = 1 To 5
  hairetsu(i) = i & "個め"
 Next i
 For i = 1 To 5
  Debug.Print hairetsu(i) 'イミディエイトウィンドウに表示
 Next i 
 ReDim hairetsu(10)
 For i = 6 To 10
  hairetsu(i) = i & "個め"
 Next i
 For i = 6 To 10
  Debug.Print hairetsu(i) 'イミディエイトウィンドウに表示
 Next i 
End Sub


▼要素数を文中で変更する際に要素を保持する記述例▼

Sub hairetsu_test()
  Dim hairetsu() As String
  Dim i As Long
  
  ReDim hairetsu(5)
  For i = 1 To 5
    hairetsu(i) = i & "個め"
  Next i
  
  ReDim Preserve hairetsu(10) '格納した要素を保持しつつ要素数を変更
  
  For i = 6 To 10
    hairetsu(i) = i & "個め"
  Next i
  For i = 1 To 10
    Debug.Print hairetsu(i) 'イミディエイトウィンドウに表示
  Next i
End Sub


【Erase】を使用して配列変数の要素の初期化

Eraseステートメントを使用し、配列変数の中身を初期化
静的配列の場合は値の削除のみ、動的配列の場合は値とメモリの両方を削除
▼構文▼
 Erase 配列変数

▼要素の中身を文中で初期化する記述例▼

Sub hairetsu_test()
  Dim hairetsu() As String
  Dim i As Long
  
  ReDim hairetsu(5)
  For i = 1 To 5
    hairetsu(i) = i & "個め"
  Next i
  
  Erase hairetsu '格納した要素を初期化
  
  For i = 6 To 10
    hairetsu(i) = i & "個め"
  Next i
  For i = 1 To 10
    Debug.Print hairetsu(i) 'イミディエイトウィンドウに表示
  Next i
End Sub