シートの追加
最もシンプルなシートの追加方法
単純に Excel ファイルにシートを追加する構文は以下です。
上記構文で、指定した Excel ファイルにシートが一つ追加されます。シートの追加位置としては、現在アクティブなシートの前に追加されます。
以下のマクロを実行してみます。
Sub test()
ThisWorkbook.Sheets.Add
End Sub
マクロ実行前のシート構成は以下の通りとします。
マクロ実行後のシート構成は以下のようになり、Sheet8 が追加されたシートです。
追加されるシートの名前は「Sheet<数字>」になります。
指定した位置にシートを追加する
指定した位置にシートを追加する構文は以下です。
以下のマクロは、Sheet2 シートの後にシートを追加します。
Sub test()
ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets("Sheet2")
End Sub
マクロ実行前のシート構成は以下の通りとします。
マクロ実行後のシート構成は以下のようになり、Sheet11 が追加されたシートです。
シートのコピー
シートをコピーする構文は以下です。
以下のマクロは、Sheet2 シートを Sheet3 シートの後にコピーします。
Sub test()
ThisWorkbook.Sheets("Sheet2").Copy after:=ThisWorkbook.Sheets("Sheet3")
End Sub
マクロ実行前のシート構成は以下の通りとします。
マクロ実行後のシート構成は以下のようになり、Sheet2(2) がコピーされたシートです。
シートの追加・コピー時の位置指定のテクニック
シートの追加やコピーを行う際に、シートの中の先頭または最後の位置にシートを追加したいということが良くあります。
このような場合の位置指定のテクニックについて記載します。
シートの中の先頭に追加したい場合
シートの指定方法として、Sheets(1)
と指定することで先頭のシートを指定することができます。これを利用して、以下の構文でシートの中の先頭にシートを追加・コピーすることができます。
マクロ例:
Sub test()
ThisWorkbook.Sheets("Sheet2").Copy before:=ThisWorkbook.Sheets(1)
End Sub
シートの中の末尾に追加したい場合
シートの指定方法として、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
シートの削除
シートを削除する構文は以下です。
以下のマクロは 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
これで確認メッセージを表示させずにシートを削除できます。