シートの追加
最もシンプルなシートの追加方法
単純に Excel ファイルにシートを追加する構文は以下です。
<Workbook>.Sheets.Add
上記構文で、指定した Excel ファイルにシートが一つ追加されます。シートの追加位置としては、現在アクティブなシートの前に追加されます。
以下のマクロを実行してみます。
Sub test()
ThisWorkbook.Sheets.Add
End Sub
マクロ実行前のシート構成は以下の通りとします。

マクロ実行後のシート構成は以下のようになり、Sheet8 が追加されたシートです。

追加されるシートの名前は「Sheet<数字>」になります。
指定した位置にシートを追加する
指定した位置にシートを追加する構文は以下です。
- 指定シートの後にシートを追加
<Workbook>.Sheets.Add after:=<指定シート>
- 指定シートの前にシートを追加
<Workbook>.Sheets.Add before:=<指定シート>
以下のマクロは、Sheet2 シートの後にシートを追加します。
Sub test()
ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets("Sheet2")
End Sub
マクロ実行前のシート構成は以下の通りとします。

マクロ実行後のシート構成は以下のようになり、Sheet11 が追加されたシートです。

シートのコピー
シートをコピーする構文は以下です。
- 指定シートの後にシートをコピー
<Workbook>.<コピー元シート>.Copy after:=<指定シート>
- 指定シートの前にシートをコピー
<Workbook>.<コピー元シート>.Copy before:=<指定シート>
以下のマクロは、Sheet2 シートを Sheet3 シートの後にコピーします。
Sub test()
ThisWorkbook.Sheets("Sheet2").Copy after:=ThisWorkbook.Sheets("Sheet3")
End Sub
マクロ実行前のシート構成は以下の通りとします。

マクロ実行後のシート構成は以下のようになり、Sheet2(2) がコピーされたシートです。

シートの追加・コピー時の位置指定のテクニック
シートの追加やコピーを行う際に、シートの中の先頭または最後の位置にシートを追加したいということが良くあります。
このような場合の位置指定のテクニックについて記載します。
シートの中の先頭に追加したい場合
シートの指定方法として、Sheets(1)
と指定することで先頭のシートを指定することができます。これを利用して、以下の構文でシートの中の先頭にシートを追加・コピーすることができます。
<Workbook>.Sheets.Add before:=
<Workbook>.Sheets(1)
<Workbook>.<コピー元シート>.Copy before:=
<Workbook>.Sheets(1)
マクロ例:
Sub test()
ThisWorkbook.Sheets("Sheet2").Copy before:=ThisWorkbook.Sheets(1)
End Sub
シートの中の末尾に追加したい場合
シートの指定方法として、Sheets(Sheets.Count)
と指定することで末尾のシートを指定することができます。これを利用して、以下の構文でシートの中の末尾にシートを追加・コピーすることができます。
<Workbook>.Sheets.Add after:=
<Workbook>.Sheets(
Sheets.Count
)
<Workbook>.<コピー元シート>.Copy after:=
<Workbook>.Sheets(
Sheets.Count
)
マクロ例:
Sub test()
ThisWorkbook.Sheets("Sheet2").Copy after:=ThisWorkbook.Sheets(Sheets.Count)
End Sub
追加されたシートは ActiveSheet として操作可能
新規追加されたシートは、シート追加直後はアクティブなシートになっています。
このため、以下のマクロのように、ActiveSheet をシート型の変数に格納することで、変数を介して追加したシートを操作することができます。
Sub test()
Dim mysheet As Worksheet
ThisWorkbook.Sheets.Add
Set mysheet = ThisWorkbook.ActiveSheet
mysheet.Name = "追加したシート"
End Sub
シートの削除
シートを削除する構文は以下です。
<Workbook>.<対象シート>.Delete
以下のマクロは Sheet2 (2) シートを削除するマクロです。
Sub test()
ThisWorkbook.Sheets("Sheet2 (2)").Delete
End Sub
このマクロを実行するとシートを削除できますが、シート削除時に以下のような確認メッセージが表示されて、処理が停止してしまいます。

この確認メッセージを表示させずにシートを削除するためには、以下のようにシート削除処理の前後に処理を追加します。
Sub test()
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Sheet2 (2)").Delete
Application.DisplayAlerts = True
End Sub
Application.DisplayAlerts = False
- 以後、確認メッセージを表示させなくする
Application.DisplayAlerts = True
- 以後、確認メッセージを表示させるようにする
これで確認メッセージを表示させずにシートを削除できます。
