Excel VBA配列:種類と使用方法(例付き)

⚡ スマートサマリー

Excel VBAの配列は、同じデータ型の関連値を1つの名前で格納し、インデックスを使用してアクセスします。このページでは、静的配列と動的配列、1次元配列、2次元配列、多次元配列、宣言構文、および飲料の積載例について説明します。

  • 📦 配列の概念: 同じデータ型の複数の値をインデックスで区切って格納する、単一の名前付きメモリ位置。
  • 🎯 Advantages: 配列は関連するデータをグループ化し、変数の数を減らし、データの取得とソートを高速化します。
  • 📌 静的配列: 要素数がわかっている場合は、たとえば Dim ArrayMonth(12) As String のように固定サイズで宣言します。
  • 🔄 動的配列: 要素数が不明な場合は、Dim ArrayMonth() を使用して空として宣言し、後で ReDim を使用してサイズを設定します。
  • 📐 外形寸法: 配列は、1つ、2つ、またはそれ以上のインデックスを使用して、単一のリスト、テーブル、または多階層のデータをモデル化します。
  • 🧪 実例: コマンドボタンは、配列から4つの飲料名をSheet1.Cellsを使用してワークシートのセルに読み込みます。

Excel VBA 配列

VBA配列とは何ですか?

配列は、複数の値を格納できるメモリ位置として定義されます。 値はすべて同じデータ型である必要があります。 お気に入りの飲み物のリストを XNUMX つの変数に保存したいとします。これには VBA 配列を使用できます。

配列を使用すると、関連する値を同じ名前で参照できます。 インデックスまたは添え字を使用してそれらを区別できます。 個々の値は Excel VBA 配列の要素として参照されます。 これらはインデックス 0 から最大のインデックス値まで連続しています。

このチュートリアルでは、次を使用していることを前提としています。 Microsoft エクセル バージョン 2013。この知識は他のバージョンにも適用されます。 Microsoft エクセルもそう。

配列の利点は何ですか?

配列コードを書く前に、配列を使うメリットを理解しておくと役立ちます。以下は、VBAの配列関数が提供する利点の一部です。

  1. 論理的に関連するデータをグループ化します。たとえば、学生のリストを保存したいとします。 生徒のカテゴリ (幼稚園、小学校、中学校、高校など) に個別の場所を持つ単一の配列変数を使用できます。
  2. 配列を使用すると、保守可能なコードを簡単に作成できます。 同じ論理的に関連するデータに対して、複数の変数を定義する代わりに、単一の変数を定義できます。
  3. パフォーマンスの向上 – 配列を定義すると、データの取得、並べ替え、および変更がより速くなります。

VBA の配列の種類

VBA は XNUMX 種類の配列をサポートしています。

  • 静的 – これらのタイプの配列には、保存できる要素の数があらかじめ決められています。 静的配列のデータ型のサイズは変更できません。 これらは、週の日数、性別などの既知のエンティティを操作する場合に便利です。次に例を示します。: 文字列としての Dim ArrayMonth(12)
  • ダイナミック – これらのタイプの配列には、保存できる要素の数があらかじめ決められていません。 これらは、数値を事前に決定できないエンティティを操作する場合に便利です。次に例を示します。: バリアントとしての Dim ArrayMonth()

どの型がデータに適しているかがわかったら、次のステップはそれぞれの型の宣言構文を作成することです。

配列を宣言する構文

静的配列

宣言するための構文 静的解析 配列は次のとおりです。

Dim arrayName (n) as datatype

ここに、

Code 行動
Dim arrayName (n) データ型
  1. これは、サイズが n でデータ型が である arrayName という配列変数を宣言します。サイズは、配列に格納できる要素の数を示します。

動的配列

宣言するための構文 動的解析 配列は次のとおりです。

Dim arrayName() as datatype
ReDim arrayName(4)

ここに、

Code 行動
Dim arrayName () データ型
  1. 要素数を指定せずにarrayNameという配列変数を宣言します。
ReDim 配列名(4)
  1. 配列が定義された後の配列サイズを指定します。

配列の次元

配列は XNUMX 次元、XNUMX 次元、または多次元にすることができます。

  • 一次元: この次元では、配列はインデックスを XNUMX つだけ使用します。 たとえば、各年齢の人数。
  • 二次元: この次元では、配列は XNUMX つのインデックスを使用します。 たとえば、各クラスの生徒の数などです。 クラス数と各クラスの生徒数が必要です
  • 多次元: この次元では、配列は 30 つ以上のインデックスを使用します。 たとえば、日中の気温です。 (40、20、XNUMX)。

Excel VBAで配列を使用する方法

理論を理解できたので、配列を実際のワークブックで活用してみましょう。簡単なアプリケーションを作成します。このアプリケーションは、配列変数から取得したデータを使ってExcelシートにデータを入力します。このVBA配列の例では、以下のことを行います。

  • 新しいを作成します Microsoft Excel ワークブックを選択し、Excel マクロ有効ワークブック (*.xlsm) として保存します。
  • ワークブックにコマンド ボタンを追加する
  • コマンド ボタンの名前とキャプションのプロパティを設定する
  • Excel シートにデータを入力する VBA のプログラミング

この練習を段階的にやってみましょう。

ステップ 1 – 新しいワークブックを作成する

  1. 店は開いています Microsoft Excel
  2. 新しいワークブックを VBA Arrays.xlsm として保存します

ステップ 2 – コマンド ボタンを追加する

注意: このセクションは、Excel でインターフェイスを作成するプロセスに精通していることを前提としています。 慣れていない場合は、チュートリアルを読んでください VBA ExcelフォームコントロールとActiveXコントロール。 インターフェースの作成方法を説明します。

  1. シートにコマンドボタンを追加する

Excel VBAで配列を使用する

  1. name プロパティを cmdLoadBeverages に設定します。
  2. キャプション プロパティを「飲み物をロード」に設定します。

GUI は次のようになります。

Excel VBAで配列を使用する

ステップ 3 – ファイルを保存する

  1. 名前を付けて保存ボタンをクリックします
  2. 以下の図に示すように、Excel マクロ有効ワークブック (*.xlsm) を選択します。

Excel VBAで配列を使用する

ステップ 4 – コードを書く

次に、アプリケーションのコードを記述します。

  1. 「飲み物の読み込み」ボタンを右クリックし、「コードの表示」を選択します。
  2. cmdLoadBeveragesのクリックイベントに次のコードを追加します。
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

ここに、

Code 行動
Dim Drinks(1 ~ 4) を文字列として表示
  • Drinks という配列変数を宣言します。最初の配列インデックスは 1 で、最後の配列インデックスは 4 です。
ドリンク(1)=「ペプシ」
  • 値 Pepsi を最初の配列要素に割り当てます。 他の同様のコードは、配列内の他の要素に対して同じことを行います。
Sheet1.Cells(1, 1).Value = “私の好きな飲​​み物”
  • 値 My Favorite Beverages をセル アドレス A1 に書き込みます。 Sheet1 はシートを参照し、Cells(1,1) は行番号 1 と列 1 (B) を参照します。
Sheet1.Cells(2, 1).Value = ドリンク(1)
  • インデックス 1 の配列要素の値を列 1 の行番号 XNUMX に書き込みます。

アプリケーションをテストする

コードを配置したら、最後のステップはボタンを実行し、配列がシート全体に表示されることを確認することです。開発タブを選択し、デザインモードボタンが「オフ」になっていることを確認してください。オフになっているかどうかは、背景が白くなり、緑色の背景にならないことで確認できます。(下の画像を参照)

Excel VBA でのアプリケーションのテスト

「飲み物をロード」ボタンをクリックします

次のような結果が得られます

Excel VBA でのアプリケーションのテスト

上記のコードを含む Excel をダウンロード

上記のExcelファイルをダウンロードしてください。 Code

よくあるご質問

静的配列は、宣言時に固定サイズが設定されます(例:Dim Arr(12))。動的配列は、Dim Arr() で空の状態で宣言され、要素数が事前にわからない場合は、後で ReDim を使用してサイズが変更されます。

ReDim は、動的配列が宣言された後にサイズを設定または変更します。ReDim Preserve Arr(10) のように Preserve キーワードを追加すると、サイズ変更時に既存の値が保持されます。Preserve を指定しない場合は、格納されているすべての値がクリアされます。

LBound関数とUBound関数を使用してください。LBound関数は最小インデックスを返し、UBound関数は最大インデックスを返します。要素数は、UBound(Arr)からLBound(Arr)を引いた数に1を加えた数となり、これは静的配列と動的配列の両方で有効です。

はい。CopilotのようなAIアシスタントは、例えば「10個の商品名を列に読み込む」といった単純なリクエストから、配列宣言やループを生成します。開発者はそのコードをエディタに貼り付け、ワークブックのコピーでテストします。

はい。AIアシスタントは「添え字が範囲外です」というエラーメッセージとコードを読み取り、配列の境界を超えているインデックスを特定し、ReDimサイズやループカウンタの調整など、修正案を提示します。開発者はそれを適用して再テストします。