Excel VBAでシートを追加する:Add

VBA でシートを追加するには、Add メソッドを使用します。ここでは、Add メソッドの使い方について説明します。

Add メソッドの使い方

Add メソッドの構文は以下の通りです。

Worksheets.Add(Before, After, Count)

Add メソッドでは、引数を使用して追加したシートを指定したシートの前、あるいは後ろに挿入するか決定します。また、引数 Count で追加するシート枚数が指定できます。

引数のシートを指定するときは Before や After、Count の後に := をつけて指定します。After や Before は省略可能で、省略した場合はアクティブシートの前に追加されます。Count を省略した場合は、1つだけシートが追加されます。

以下は、Sheet1 の後ろにシートを2枚追加する例です。

Worksheets.Add After := Worksheets("Sheet1"), Count := 2

追加されたシートは Sheet4, Sheet5 というような名前が自動的に付けられます。

vba_add

シートを先頭に追加する

以下は、新しいシートを先頭の位置に追加する例です。

Worksheets.Add Before := Worksheets(1)

引数の Before に1番目のシートを指定することで、先頭の位置にシートを追加することができます。

vba_add6

シートを末尾に追加する

以下は、シートを末尾の位置に追加する例です。

Worksheets().Add After := Worksheets(Worksheets.Count)

まず、Worksheets.Count を使用して末尾のシートのインデックス番号を取得しています。そのインデックス番号を利用してシートを取得し、 After の引数に指定することによって末尾の位置にシートを追加しています。

vba_add2

シートに名前を指定して追加する

以下は、シートに名前を付けて追加する例です。この例では追加したシートに「売上データ」と名付けています。

Worksheets("Sheet1").Copy After := Worksheets(Worksheets.Count) ' 末尾に追加
ActiveSheet.Name = "売上データ"

シートを追加すると新しく追加されたシートがアクティブになるので、ActiveSheet.Name で名前を変更してます。上のプログラムを実行すると、「売上データ」という名前のシートが追加されます。

vba_add5

追加シートをアクティブにしない

シートを追加すると自動的に、追加されたシートがアクティブになってしまいます。以下は、シートを追加したときに追加されたシートがアクティブにならないようにする例です。

Dim sheet As Worksheet
Set sheet = ActiveSheet ' 現在アクティブなシートを取得する
Worksheets.Add After := Worksheets(Worksheets.Count)
sheet.Activate ' シートをアクティブにする

まず ActivateSheet で現在アクティブなシートを取得し、シートを追加した後に Activate でアクティブだったシートをアクティブにし直しています。

vba_add4

この例は、Sheet1 がアクティブな状態でシートを追加しています。