VBA シートを追加する

はじめに

Excel VBA マクロでシートを追加する方法を紹介します。

Sheets.Add または Worksheets.Add メソッドから、シートを追加できます。

Sheets.Add(Before:=Sheets(1)) メソッドから、1 番左に追加できます。

Sheets.Add(After:=Sheets(Sheets.Count)) メソッドから、1 番右に追加できます。

シートをコピーするには「シートをコピーする」をご覧ください。
シートを指定して取得するには「シートを取得する」をご覧ください。
  • 目次
    • シートを追加する
    • 追加したシートを編集する
    • 別ブックにシートを追加する

シートを追加する

sheet1

シートを追加するには Sheets.Add または Worksheets.Add を入力します。

Dim ws As Worksheet
Set ws = Sheets.Add     ' ワークシートを追加
Set ws = Worksheets.Add ' ワークシートを追加
Debug.Print(ws.Name)
3

アクティブシートの左側に追加され、追加したシートがアクティブになります。

位置や数を指定

追加する位置や数を引数で指定できます。

引数には次のものがあり、すべて省略できます。

引数「Before」指定したシートの左側に追加します。引数「After」と一緒に指定できません。
引数「After」指定したシートの右側に追加します。引数「Before」と一緒に指定できません。
引数「Count」追加するシートの数を指定します。
引数「Type」ワークシートの種類を指定します。

引数「Type」には次のものがあります。

定数名 説明
xlWorksheet (既定)-4167ワークシート
xlChart-4109グラフシート
xlDialogSheet-4116Excel5ダイアログシート
xlExcel4IntlMacroSheet4Excel4インターナショナルマクロシート
xlExcel4MacroSheet3Excel4マクロシート
Call Sheets.Add(Before:=ActiveSheet) ' 引数をすべて省略したときと同じ位置に追加
Call Sheets.Add(Before:=Sheets(2))   ' 2 番目のシートの左側に追加
Call Sheets.Add(After:=Sheets(2))    ' 2 番目のシートの右側に追加
Call Sheets.Add(Count:=2)            ' シートを 2 つ追加
Call Sheets.Add(Type:=xlWorksheet)   ' ワークシートを追加

Sheets と Worksheets の違いはワークシート以外を取得するかどうかです。

  • Sheets:すべてのシートを取得
  • Worksheets:ワークシートのみ取得(グラフシートなどは取得しない)

このため xlChart と xlDialogSheet を Worksheets.Add では指定できません。

1 番左や右に追加

シートを 1 番左に追加するには、引数に Before:=Sheets(1) を入力します。

シートを 1 番右に追加するには、引数に After:=Sheets(Sheets.Count) を入力します。

Dim ws As Worksheet
Set ws = Sheets.Add(Before:=Sheets(1))           ' 1 番左に追加
Set ws = Sheets.Add(After:=Sheets(Sheets.Count)) ' 1 番右に追加
Debug.Print(ws.Name)

追加したシートを編集する

Add の戻り値から追加したシートを取得できます。

Dim ws As Worksheet
Set ws = Sheets.Add ' 戻り値から追加したシートを取得

' そのシートに対して編集
ws.Name = "追加"
4

引数「Count」から複数のシートを追加したときは 1 つだけ取得されます。

複数追加するときは 1 つずつシートを追加して編集します。

別ブックにシートを追加する

ブックを指定しないシートの操作はすべて「アクティブブック」に対して行われます。

  • アクティブブック:開いているすべてのブックの中で一番手前に表示されているブックです。
  • VBA を実行しているブック:実行している VBA のコードがあるブックです。

アクティブブック

ブックを指定しないシートの操作は、アクティブブックを表す ActiveWorkbook. が省略されています。

' どちらも同じコード
Call Sheets.Add
Call ActiveWorkbook.Sheets.Add
ショートカットや VBA の IDE から実行したときに、別ブックがアクティブになっていることがあります。

VBA を実行しているブック

VBA を実行しているブックに対して操作するには ThisWorkbook を入力します。

' VBA を実行しているブックに対して操作
Call ThisWorkbook.Sheets.Add
Call ThisWorkbook.Worksheets.Add

ブックを指定

ブックを指定するには Workbooks の引数にブック名またはインデックスを指定します。

ブック「Book2.xlsx」を指定するには Workbooks("Book2.xlsx") を入力します。

' ブック「Book2.xlsx」に追加
Call Workbooks("Book2.xlsx").Sheets.Add

' 2 番目のブックの 2 番目のシートの後ろに移動
Call Workbooks(2).Worksheets.Add(After:=Workbooks(2).Sheets(2))

Workbooks のインデックスは、ブックを開いた順番に 1 からスタートします。