この記事を読んでわかること
- VBAでワークシートを追加する方法を学べる
- 追加したワークシートの名前を変更する方法がわかる
- 追加したワークシートの位置を変更する方法がわかる
- 複数のワークシートを追加する方法がわかる
- ワークシート追加前後でよくする処理を知れる
- ワークシートを追加した際によくあるエラーを知れる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
VBA(Excelマクロ)でワークシートを追加する方法
まずはワークシートを追加する一番シンプルな方法を解説いたします。
最も簡単な追加方法
前提知識{マクロの基礎・作り方から実行まで}
Sub 新しいワークシートを追加()
Worksheets.Add
End Sub
上記VBAコードのように「Worksheets」コレクションに「Add」メソッドを使用することで、新しいワークシートを追加することができます。
コレクションとは、同類オブジェクトの集合体を指します。
オブジェクトとは、操作対象(セルやワークシート・ワークブックなど)のことです。
今回の場合は、ワークシートオブジェクトの集合体(Sheet1、Sheet2など)である「Worksheets」コレクションを操作します。

メソッドとは、特定のオブジェクト(セルやシートなど)に対して実行できる機能で、
「オブジェクト名(コレクション名).メソッド名」というコードで記述します。
「Worksheets.Add」と記述することで、Addメソッドを「Worksheets」に対して実行したということになります。
新しいワークシートは、アクティブシート(選択状態のシート)の前に追加されます。
また、新しく追加されたワークシートがアクティブ(選択状態)となります。
▼実行前

▲実行後
追加する位置を指定
ワークシートを追加する位置を指定することもできます。
「Add」メソッドの後ろに、ワークシートを追加する位置を記述してください。
Sub 指定のシートの前にワークシートを追加()
Worksheets.Add Before:=Worksheets("Sheet1") ' 「Sheet1」の前(左)に追加される
End Sub
「Before:=Worksheets(“Sheet1”)」と記述することで、「Sheet1」の前(左)に新しいワークシートが追加されます。

- Before:指定のシートの前(左)に新しいワークシートを追加
- After:指定のシートの後ろ(右)に新しいワークシートを追加
指定のシート名が不明な場合は、シート番号で指定することも可能です。
「Worksheets(1)」と記述することで、一番左のワークシートを指定したことになります。
Sub 先頭にワークシートを追加()
Worksheets.Add Before:=Worksheets(1) ' 一番左のワークシートの前(先頭)に新しいワークシートを追加
End Sub

左から2番目なら(2)、3番目なら(3)という具合です。
()内に「Worksheets.count」と記述することで、一番後ろ(一番右)のワークシートを指定したことになります。
ワークシートの最後尾(末尾)に新しいワークシートを追加したい場合は、下記のように記述してください。
Sub 最後尾にワークシートを追加()
Worksheets.Add After:=Worksheets(Worksheets.count) ' 最後尾(末尾)に新しいワークシートを追加
End Sub

追加して名前を変更
新しいワークシートは、「Sheet2」や「Sheet3」というような名前で追加されます。
ワークシートを追加したと同時に、名前を変更することもできます。
「Add」メソッドの後ろに、「Name」メソッドを記述し、名前を指定してください。
Sub 名前付きのワークシート追加()
Worksheets.Add.Name = "Utatane" ' 「Utatane」という名前のワークシートが新たに追加される
End Sub

もし、同じ名前(Utatane)のシートが既に存在していた場合、エラーが発生してマクロが止まってしまいますので注意してください。

詳しくは下記記事で解説しておりますので、ご参考ください。
位置の変更と名前の変更は同時にできないので、
名前を変更した後に、「Move」メソッドを使って位置を変更しましょう。
Sub 名前付きシート追加()
Worksheets.Add.Name = "Utatane" ' 「Utatane」シートを新たに追加
Worksheets("Utatane").Move Before:=Worksheets(1) ' 「Utatane」シートを一番前に移動
End Sub

複数のワークシートを追加
一度に複数のワークシートを追加することもできます。
下記VBAコードは、「Utatane1」「Utatane2」「Utatane3」という名前のワークシートを最後尾に追加した例です。
Sub 複数シート追加()
Dim i As Integer
For i = 1 To 3
Worksheets.Add.Name = "Utatane" & i
Worksheets("Utatane" & i).Move After:=Worksheets(Worksheets.Count)
Next i
End Sub

Forループを使って、ワークシート追加&名前変更と位置変更を3回繰り返しています。
ワークシート名の連番部分は、変数(i)に入れた数値をカウントアップさせています。
前提知識{変数の宣言や使い方}
前提知識{ループ処理(For)}
ワークシート追加前後によくする処理
別のワークシートをアクティブにする
ワークシートを追加した場合、最後に追加されたワークシートがアクティブ(選択状態)になっています。
別のワークシートをアクティブにするには、下記のように「Select」メソッドを使用してください。
Worksheets(1).Select
使用例を載せておきます。
Sub 新しいワークシートを追加し、一番左のワークシートをアクティブにする()
Worksheets.Add
Worksheets(1).Select
End Sub
下記のように、シート名でも指定ができます。
Sub 新しいワークシートを追加し、Sheet1をアクティブにする()
Worksheets.Add
Worksheets("Sheet1").Select
End Sub
ワークシートをコピーする
新しく追加したワークシートの体裁が整ったら、
そのワークシートをテンプレとして、ワークシートをコピーしてみましょう。
例えば1月のデータが完成したら、そのワークシートをコピーして2月のデータを作る場合などに便利です。
ワークシートのコピー方法は、下記記事で詳しく解説しております。
ワークシートを削除する
新しいワークシートを追加したから、古いワークシートを削除したいと思うこともあるかと思います。
ワークシートの削除方法は、下記記事をご参考ください。
ワークシート追加でよくあるエラーと対処法
名前重複時のエラー

追加したワークシートの名前を変更した場合、その名前のシートが既に存在していると、上記のようなエラーが発生します。
元のExcelファイルとVBAコードを再度確認してみましょう。
シート名が不正

変更したシート名が不正(つけられない名前)の場合、上記のようなエラーが発生します。
下記記事を参考に、シート名を見直してみてください。
シート位置が不正

存在しないシートの前後を指定したり、「Worksheets(0)」など不正な指定をすると上記のようなエラーが発生します。
コードを再確認しましょう。
最後に
VBA(Excelマクロ)でワークシートを追加する方法について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!