VBA オブジェクト配列
Last updated on 6月 28, 2022
In this Article
このチュートリアルでは、VBAでオブジェクトの配列を作成し使用する方法を説明します。
VBAでは、配列は複数の値を格納する変数です。他のデータを格納するのと同じように、VBAオブジェクトを配列に格納することができます。
オブジェクト配列の宣言
この例では、VBAのワークシートの配列を宣言します。
Dim arWks(3) As Worksheet
静的なオブジェクト配列の作成
オブジェクト配列を静的と宣言すると、ワークブックから選択したシートを配列に格納することができます。
Sub TestObjArray()
'配列をワークシート配列として定義する
Dim arWks(1 to 3) As Worksheet
'配列に3枚のシートを追加する
Set arWks(1) = Sheets(1)
Set arWks(2) = Sheets(2)
Set arWks(3) = Sheets(3)
End Sub
動的なオブジェクト配列の作成
オブジェクト配列を動的と宣言すると、ワークブックのシートを数えたあとで、オブジェクト配列に配列サイズを代入することができます。
Sub TestObjArray()
'配列をワークシート配列として定義する
Dim arWks() As Worksheet
'ファイル内のワークシートの数をカウントし、配列を再宣言するための変数を定義する
Dim n As Integer
Dim i As Integer
'シートの数をカウントし、1を減じて配列の上限を設定する
n = Application.Sheets.Count - 1
ReDim arWks(n)
'ワークシート配列にワークブック内の全シートを埋める
For i = LBound(arWks) to UBound(arWks)
Set arWks(i) = ActiveWorkbook.Sheets(i + 1)
Next i
End Sub
上記の例では、まずワークシート配列を宣言しています。 そして、ワークブックのシート数を数え、その値から1を引いた値をArrayのUBoundに代入しています。 これは、配列のLBoundが0から始まるためです。最後に、シートをループして、各シートを配列に追加しています。
VBAコードでのオブジェクト配列の使用
ワークシート配列への入力が完了したら、VBA を使用して配列内をループすることができます。
Sub TestObjArray()
'配列をワークシート配列として定義する
Dim arWks() As Worksheet
'ファイル内のワークシートの数をカウントし、配列を再宣言するための変数を定義する
Dim n As Integer
Dim i As Integer
'シートの数をカウントし、1を減じて配列の上限を設定する
n = Application.Sheets.Count - 1
ReDim arWks(n)
'ワークシート配列にワークブック内の全シートを埋める
For i = LBound(arWks) to UBound(arWks)
Set arWks(i) = ActiveWorkbook.Sheets(i + 1)
Next i
'配列の各シートで任意の処理を行う
For i = LBound(arWks) to UBound(arWks)
arWks(i).Range("A1:H1").Font.Bold = True
Next i
End Sub
上記の例では、配列をループして、配列内の各シートの最初の行を太字にしています。