@634

VBA TIPS - 配列の利用

Advertisement

静的配列

宣言

書式
Dim 配列名(要素数) As 型

Dim names(10) As String
Dim Array(5) As Object
要素数に指定できるのは、基本データ型の数値と定数のみ。

値の代入、取得

書式:値の代入
配列名(添字) = 値

書式:値の取得
配列名(添字)

Dim names(2) As Integer
names(1) = 10 ' 値の代入
MsgBox names(1) ' 値の取得

動的配列

利用例

1.要素数を指定しないで配列を宣言する
Dim Array() As Integer

2.要素数が決定したら、ReDimを利用して領域再割り当てを行う。
ReDim 配列名(要素数) As 型

ReDim names(10) As String

静的宣言→要素数の変更

静的宣言を行った配列に対する領域の再割り当ては、エラーとなる。

Dim names(2) As Integer
ReDim names(3) As Integer
' ↑エラー

既存のデータを残す/残さない

Preserveオプションを指定すると、既存のデータを残したまま配列の拡張・縮小を実行することができる。

書式
ReDim Preserve names(5) As String

例:既存のデータを残す場合
Dim sample() As Integer
Redim sample(1) As Integer
sample(1) = 5
Redim Preserve sample(2) As Integer
sample(2) = 10
Debug.Print sample(1) + sample(2)

結果
15

例:既存のデータを残さない場合
Dim sample() As Integer
Redim sample(1) As Integer
sample(1) = 5
Redim sample(2) As Integer
sample(2) = 10
Debug.Print sample(1) + sample(2)

結果
10

配列Tips

配列要素の既定値を指定

VBAでは、配列に対する添字の下限値がデフォルトで1となっている。
他の言語では0から始まるものが多いので、混乱の元になる可能性がある。
Option句を利用すると、この下限値を0か1の好きなほうに設定することができる。

書式
Option Base [0|1]

Option Base [0]

静的配列に対する添字の下限値と上限値を指定する。

Dim 配列名(添字の最小値 To 添字の最大値) As 型

配列に対する添字の最大値/最小値を取得する。

最大値はUBound関数を、最小値はLBound関数を利用する。

書式
UBound(配列)
LBound(配列)

利用例
Dim names(2 To 10) As String
Debug.print UBound(names)
Debug.print LBound(names)

結果
10
2

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール