VBA:配列

目次

VBAで配列を理解する

① 配列の基本的な概念

配列とは、同一のデータ型の値を一つの変数名で管理するためのデータ構造です。

VBAで配列を使用することにより、複数のデータを効率的に処理することが可能になります。

配列は、特定のタスクを実行する際に必要なデータを一箇所にまとめて保持するために用いられ、データの集合体として機能します。

② 配列の宣言と初期化

配列の宣言にはDimステートメントを使用し、配列のサイズを定義します。

Dim 配列名(要素番号) As データ型

例えば、Dim MyArray(5) As Integer は、6つの整数型の要素を持つ配列を宣言します。

要素番号に5と書くと、0から始まり5までなので、要素の数は5つではなく6つなので注意してください

Dim MyArray(5) As Integer ' 6つの要素を持つ配列を宣言
MyArray(0) = 20
MyArray(1) = 21
MyArray(2) = 22
MyArray(3) = 23
MyArray(4) = 24
MyArray(5) = 25

初期化には、配列の各要素に値を割り当てることで行います。配列の要素は、添え字を使用してアクセスできます。

③ 配列の要素へのアクセス

配列の要素へのアクセスは、添え字を使用して行います。例えば、MyArray(0) は配列の最初の要素にアクセスする方法です。

VBAでは、配列の添え字は通常0から始まりますが、Option Base 1ステートメントを使用すると1から始まるように変更できます。

配列の操作と活用

① 配列のループ処理

配列の要素に対する繰り返し処理は、Forループを使用して行います。

例えば、For i = 0 To UBound(MyArray) ステートメントは、配列の最初の要素から最後の要素までループします。このように配列とループを組み合わせることで、効率的なデータ処理が可能になります。

② 配列の動的再定義

配列のサイズは、ReDimステートメントを使用して動的に変更できます。

Preserve キーワードを使用すると、既存のデータを保持したまま配列のサイズを変更できます。ただし、配列の最後の次元のサイズのみ変更可能です。

③ 多次元配列の利用

VBAでは2次元以上の多次元配列も使用できます。多次元配列は、表やマトリックスのようなデータ構造を扱う際に便利です。

例えば、Dim MyMatrix(5, 5) As Integer は、6行6列の2次元整数型配列を宣言します。

配列とワークシートの連携

① 配列とセル範囲の相互作用

VBAの配列はExcelのセル範囲と相互にデータをやり取りできます。

例えば、MyArray = Range("A1:A5").Value は、セル範囲A1:A5のデータを配列に格納します。

逆に、Range("A1:A5").Value = MyArray は配列のデータをセル範囲に転送します。

② 配列の応用例

配列は、大量のデータ処理、複雑な数学的計算、データ集計など、様々な場面で活用できます。

例えば、一連のセルからデータを収集し、そのデータに基づいて計算を行い、結果を別のセル範囲に出力するといった処理が容易に行えます。

これにより、VBAを使ってExcelデータをより効率的かつ柔軟に扱うことが可能になります。

hideharu
配列はVBAプログラミングの基本だよ。いろいろな形でデータを扱うことができるから、しっかりと学んでおくと良いね!

サンプルコード

1次元配列の例

1次元配列は、一列のデータを格納するのに適しています。

Sub ExampleOneDimensionalArray()
    Dim MyArray(5) As Integer ' 6つの要素を持つ配列を宣言
    Dim i As Integer

    ' 配列に値を代入
    For i = 0 To 5
        MyArray(i) = i * 10
    Next i

    ' 配列の値を表示
    For i = 0 To 5
        Debug.Print MyArray(i)
    Next i
End Sub
Sub StaticStringArrayDemo()
    ' 3つの文字列を格納できる静的配列を宣言
    Dim daysOfWeek(1 To 3) As String
    
    ' 配列に値を代入
    daysOfWeek(1) = "月曜日"
    daysOfWeek(2) = "火曜日"
    daysOfWeek(3) = "水曜日"
    
    ' 配列の内容を表示
    Dim i As Integer
    For i = 1 To 3
        Debug.Print daysOfWeek(i)
    Next i
End Sub

2次元配列の例

2次元配列は、表形式のデータを格納するのに適しています。

Sub ExampleTwoDimensionalArray()
    Dim MyArray(3, 2) As Integer ' 4行3列の配列を宣言
    Dim i As Integer, j As Integer

    ' 配列に値を代入
    For i = 0 To 3
        For j = 0 To 2
            MyArray(i, j) = i * j
        Next j
    Next i

    ' 配列の値を表示
    For i = 0 To 3
        For j = 0 To 2
            Debug.Print MyArray(i, j)
        Next j
    Next i
End Sub

動的配列の例

動的配列では、ReDimステートメントを使用して、実行時に配列のサイズを変更できます。

Sub ExampleDynamicArray()
    Dim MyArray() As Integer
    ReDim MyArray(5) ' 配列のサイズを6に設定
    Dim i As Integer

    ' 配列に値を代入
    For i = 0 To 5
        MyArray(i) = i * 5
    Next i

    ' 配列のサイズを変更
    ReDim Preserve MyArray(10) ' サイズを11に変更しつつ、既存のデータを保持

    ' 配列の値を表示
    For i = 0 To 10
        If i <= 5 Then
            Debug.Print MyArray(i)
        Else
            Debug.Print "新しい要素: " & MyArray(i)
        End If
    Next i
End Sub
Sub DynamicStringArrayDemo()
    ' 動的配列を宣言
    Dim fruits() As String
    
    ' 配列のサイズを実行時に設定
    ReDim fruits(1 To 4)
    
    ' 配列に値を代入
    fruits(1) = "リンゴ"
    fruits(2) = "バナナ"
    fruits(3) = "オレンジ"
    fruits(4) = "メロン"
    
    ' 配列の内容を表示
    Dim i As Integer
    For i = LBound(fruits) To UBound(fruits)
        Debug.Print fruits(i)
    Next i
End Sub
hideharu

これらのサンプルコードを通じて、VBAでの配列の宣言、初期化、アクセス方法などの基本を理解し、実際にプログラムで配列を使ってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次