今回は VBA を使ってワークシートを追加またはワークシートを削除する方法を解説します。
【VBA】Addでワークシートを追加します
Worksheets コレクションに対して Add メソッドを呼び出せば、新しいワークシートが追加されます。まずは一番シンプルなプロシージャを書いてみます。
'[VBA] 新しいシートを追加するマクロ Sub Add_Sheet_1() Worksheets.Add.Name = "NewSheet" End Sub
Add_Sheet_1() を実行すると NewSheet という名前の付いたシートが追加されます。このマクロでは挿入位置を何も指定していないので、今開いているシート(アクティブシート)の後ろに追加されますが、位置を指定したい場合は、Before もしくは After 引数を指定します。たとえば、次のプロシージャは Sheet1 の前に新しいシートを追加します。
'[VBA] Sheet1の前に新しいシートを追加するマクロ Sub Add_Sheet_2() Worksheets.Add(Before:=Worksheets("Sheet1")).Name = "NewSheet" End Sub
Sheet1 の後ろに新しいシートが追加したい場合は以下のように記述します。
'[VBA] Sheet1の後に新しいシートを追加するマクロ Sub Add_Sheet_3() Worksheets.Add(After:=Worksheets("Sheet1")).Name = "NewSheet" End Sub
複数のシートをまとめて追加したいときは Count 引数を指定します。たとえば、Sheet1 の前に 2 枚のシートが追加するには次のようなコードを書きます。
'[VBA] Sheet1の前に2枚のシートを追加するマクロ Sub Add_Sheet_4() Worksheets.Add Before:=Worksheets("Sheet1"), Count:=2 End Sub
【VBA】Deleteでワークシートを削除します
VBA でワークシートを削除するときは ワークシートオブジェクトに対して Delete メソッドを呼び出します。特に何も指定しないと、手動でシートを消すときと同じように「シートを削除すると元に戻せません」みたいな警告メッセージが表示されます。それが煩わしい場合は、DisplayAlerts を False にしておきましょう。
'[VBA] Sheet1を警告メッセージなしで削除するマクロ
Sub Delete_Sheet()
'警告メッセージをオフにします
Application.DisplayAlerts = False
Worksheets("Sheet1").Delete
End Sub
Delete_Sheet() を実行すると警告なしで Sheet1 が消えます。でもワンクリックでぱっと消えちゃうようなマクロだと「ぎゃああ! 間違えましたよー! このシートは消しちゃいかんやつですよー!」みたいなことになってしまうかもしれないので、ユーザーさんに本当に消すのかどうか確認するメッセージを出すようにしておいたほうがいいかもしれません。
以下のプロシージャはワークシートを全部削除して、新しいシートを1枚追加します。このマクロも十分注意して使ってくださいね。「間違えた!」と思ったら、ファイルを保存しないで一度エクセルを終了しましょう。
Sub DeleteAllWorksheets() Dim i As Integer ' ワークシートが1つしかない場合、エラーメッセージを表示して終了 If Worksheets.Count = 1 Then MsgBox "最後のワークシートを削除することはできません。", vbExclamation Exit Sub End If ' ワークシートを逆順で削除 Application.DisplayAlerts = False ' 警告メッセージを非表示に設定 For i = Worksheets.Count To 1 Step -1 If Worksheets(i).Name <> "Sheet1" Then ' "Sheet1" 以外のワークシートを削除 Worksheets(i).Delete End If Next i Application.DisplayAlerts = True ' 警告メッセージを元に戻す ' ワークシートが1つだけ残った場合、新しいワークシートを作成 If Worksheets.Count = 0 Then Worksheets.Add End If End Sub
コメント