VBA オブジェクト配列

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 28, 2022

このチュートリアルでは、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

上記の例では、配列をループして、配列内の各シートの最初の行を太字にしています。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples