【VBA(Excelマクロ)】ワークシートの追加方法を徹底解説|名前指定・複数

スポンサードリンク
VBA

この記事を読んでわかること

  • 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」の前(左)に新しいワークシートが追加されます。

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など、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました