ホーム > >

VBA配列の詳細

配列を宣言する

配列も変数であるため、他の変数と同様の方法で配列を宣言する必要があります。Dimステートメントを使用してください。配列を宣言するときは、配列がデータを格納するために必要なメモリを設定します。

配列宣言の例をご覧ください。

Dim cities(6) As String
Dim daysOfWeek(7) As String
Dim lotto(6) As Integer
Dim exchange(5, 3) As Variant

変数名の後に括弧が続き、括弧内に数字があることに注意してください。1次元配列には括弧内の数値が必要です。これより、配列に格納できるメンバー数の最大値が決まります。2次元配列の後には、常に2つの番号が続きます。最初の番号は行のインデックス番号で、2番目の番号は列のインデックス番号です。上記の例では、配列交換は最大15個のデータ(5*3=15)を格納できます。

配列宣言の最後の部分は、配列が格納するデータのデータ型を定義することです。配列には、数値、Long、Single、Double、バリアント、通貨、文字列、ブール、バイト、または日付のいずれかのデータ型を格納できます。

配列を宣言すると、VBは自動的に十分なメモリを占有します。割り当てられるメモリは、配列のサイズとデータ型によって異なります。 lottoという名前の6つのメンバーを持つ1次元配列を宣言すると、VBは12バイトを確保します。配列の各メンバーは2バイトを占有するためです。(数値型は2バイトであるため、2*6=12です。)配列が大きいほど、データを格納するために必要なメモリが大きくなります。配列は大量のメモリを消費し、コンピューターの運行スピードに影響を与えるため、使用できるメンバーの数のみに基づいて配列を宣言することをお勧めします。

配列の上限と下限

VBAのデフォルト値では、配列の最初のメンバーを0(インデックス番号)に設定するため、番号1は配列の2番目のメンバーを表し、番号2は3番目のメンバーを表します。番号付けは0から始まるため、1次元配列cities(6)には0から6までは7つのメンバーが含まれます。配列内のメンバーを1から数える場合は、Option Base 1というステートメントを使用して配列の下限を強制設定できます。この命令は、VBAモジュールのSubステートメントの上の宣言セクションに配置する必要があります。Option Base 1がわからない場合、VBAの配列はOption Base 0を使用して0から始まる配列メンバーに番号を作成します。

0または1以外の番号から配列番号を作成できます。これを実現するには、配列変数を宣言するときに配列の範囲を指定する必要があります。配列の範囲は、その最小および最大のインデックス番号を参照します。次の例をご覧ください。

Dim cities(3 To 6) As Integer

上記のステートメントは、4つのメンバーがある1次元配列を宣言しています。配列名の後の括弧内の数字は、配列の下限(3)と上限(6)を定義します。配列の最初のメンバーには3、2番目は4、3番目は5、4番目は6の番号です。下限と上限の間のキーワード“To”が必要であることに注意してください。

ヒント:配列範囲

Dimステートメントで指定された配列の添え字範囲は、配列範囲と呼ばれます。例:Dim mktgCodes(5 To 15)

VBAプロシージャで配列を使用する

配列を宣言した後、配列の各メンバーに値を割り当てる必要があります。これは、“配列の塗りつぶし”とも呼ばれています。次には1次元配列を使用して、6つのアメリカの都市のリストを表示します。

1、新しいブックを開き、Chap07.xlsとして保存します。

2、VBエディターウィンドウに切り替えて、VBAプロジェクトの名前をTablesに変更します。

3、新しいモジュールを挿入し、名前をStaticArraysに変更します。

4、次の手順FavoriteCitiesを入力します。

' start indexing array elements at 1 1から始まる配列メンバーに番号をつけます。
Option Base 1
Sub FavoriteCities()
'now declare the array
Dim cities(6) As String
'assign the values to array elements
cities(1) = "Baltimore"
cities(2) = "Atlanta"
cities(3) = "Boston"
cities(4) = "Washington"
cities(5) = "New York"
cities(6) = "Trenton"
'display the list of cities
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5) & Chr(13) & cities(6)
End Sub

FavoriteCitiesプロセスを開始する前に、デフォルトのインデックス番号の付ける方法が変更されました。Option Base 1ステートメントがモジュールウィンドウのSubステートメントの上にあることに注意してください。このステートメントはデフォルトの0ではなく、番号1を配列の最初のメンバーに割り当てるようにVBに指示します。

配列cities()は、6つのメンバーを持つ文字列型変数として宣言されています。 次に、配列の各メンバーに値を割り当てます。最後のステートメントは、Msgbox関数を使用して都市のリストを表示します。プロセスを実行すると、都市名が別の行に表示されます。(下記の図を参照してください)表示されるデータの順序やインデックス番号を変更できます。

5、FavoriteCitiesプロセスを実行し、結果を確認します。

6、FavoriteCitiesプロセスを変更して、都市名を逆(6から1)で表示します。

ヒント:配列メンバーの初期値

配列メンバーに値を割り当てる前に、メンバーにはデフォルト値があります。 数値変数のデフォルト値は0であり、文字列変数のデフォルト値は空白の文字列です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です