VBA でシートを追加するには、Add メソッドを使用します。ここでは、Add メソッドの使い方について説明します。
Add メソッドの使い方
Add メソッドの構文は以下の通りです。
1 |
Worksheets.Add(Before, After, Count) |
Add メソッドでは、引数を使用して追加したシートを指定したシートの前、あるいは後ろに挿入するか決定します。また、引数 Count で追加するシート枚数が指定できます。
引数のシートを指定するときは Before や After、Count の後に := をつけて指定します。After や Before は省略可能で、省略した場合はアクティブシートの前に追加されます。Count を省略した場合は、1つだけシートが追加されます。
以下は、Sheet1 の後ろにシートを2枚追加する例です。
1 |
Worksheets.Add After := Worksheets("Sheet1"), Count := 2 |
追加されたシートは Sheet4, Sheet5 というような名前が自動的に付けられます。
シートを先頭に追加する
以下は、新しいシートを先頭の位置に追加する例です。
1 |
Worksheets.Add Before := Worksheets(1) |
引数の Before に1番目のシートを指定することで、先頭の位置にシートを追加することができます。
シートを末尾に追加する
以下は、シートを末尾の位置に追加する例です。
1 |
Worksheets().Add After := Worksheets(Worksheets.Count) |
まず、Worksheets.Count を使用して末尾のシートのインデックス番号を取得しています。そのインデックス番号を利用してシートを取得し、 After の引数に指定することによって末尾の位置にシートを追加しています。
シートに名前を指定して追加する
以下は、シートに名前を付けて追加する例です。この例では追加したシートに「売上データ」と名付けています。
1 2 |
Worksheets("Sheet1").Copy After := Worksheets(Worksheets.Count) ' 末尾に追加 ActiveSheet.Name = "売上データ" |
シートを追加すると新しく追加されたシートがアクティブになるので、ActiveSheet.Name で名前を変更してます。上のプログラムを実行すると、「売上データ」という名前のシートが追加されます。
追加シートをアクティブにしない
シートを追加すると自動的に、追加されたシートがアクティブになってしまいます。以下は、シートを追加したときに追加されたシートがアクティブにならないようにする例です。
1 2 3 4 |
Dim sheet As Worksheet Set sheet = ActiveSheet ' 現在アクティブなシートを取得する Worksheets.Add After := Worksheets(Worksheets.Count) sheet.Activate ' シートをアクティブにする |
まず ActivateSheet で現在アクティブなシートを取得し、シートを追加した後に Activate でアクティブだったシートをアクティブにし直しています。
この例は、Sheet1 がアクティブな状態でシートを追加しています。