はじめに
Excelで新しいシートを追加すると、通常は現在アクティブなシートの左側に挿入されます。しかし、月別の集計シートや、作業履歴のログシートなど、「常に一番右端(末尾)にシートを追加したい」というケースは非常に多いですよね。
毎回手動でシートを右端までドラッグするのは、地味に面倒な作業です。
VBAでマクロを作成しておけば、この「シートを末尾に追加する」という作業をボタン一発で完了させることができます。この記事では、そのためのシンプルで確実なコードをご紹介します。
シートを末尾に追加するVBAサンプルコード
Worksheets.Add
メソッドを使うことで、新しいシートを追加できます。このとき、After
という引数を指定することで、シートをどこに追加するかを正確にコントロールできます。
シートを末尾に追加するには、「最後のシートの後ろ (After
)」に追加する、と命令すればよいわけです。
完成コード
' 新しいワークシートをブックの末尾に追加する
Sub AddNewSheetAtEnd()
' 変数を定義します
Dim sheetCount As Long
' 現在のシート数を取得
sheetCount = ThisWorkbook.Worksheets.Count
' 最後のシートの後ろに新しいシートを追加
Worksheets.Add After:=Worksheets(sheetCount)
MsgBox "新しいシートを末尾に追加しました。", vbInformation
End Sub
【使い方】
- VBE(
Alt + F11
)を開き、標準モジュールに上記のコードを貼り付けます。 AddNewSheetAtEnd
マクロを実行します。- ブックの一番右側に、新しいシートが追加されます。
コードの解説
Dim sheetCount As Long
現在のシート数を格納するための変数 sheetCount
を宣言しています。
sheetCount = ThisWorkbook.Worksheets.Count
Worksheets.Count
プロパティを使って、このブックに存在するシートの総数を取得し、変数 sheetCount
に代入しています。例えば、シートが5枚あれば、sheetCount
には 5
が入ります。
Worksheets.Add After:=Worksheets(sheetCount)
このコードが処理の核心です。
Worksheets.Add
: 新しいシートを追加する命令です。After:=
: シートを「~の後ろに」追加するための引数です。Worksheets(sheetCount)
:sheetCount
番目のシート、つまり「最後のシート」を指定しています。
全体として、「最後のシートの後ろに、新しいシートを追加しなさい」という意味になり、結果としてシートは常に一番右端に追加されます。
まとめ
今回は、新規シートを常にブックの末尾に追加する、シンプルで実用的なマクロをご紹介しました。
Worksheets.Add
メソッドのAfter
引数が鍵。Worksheets.Count
で最後のシートを指定する。
この一行を覚えておくだけで、日々のシート追加作業がぐっと楽になります。個人用マクロブックに登録して、いつでも呼び出せるようにしておくと、さらに便利に活用できるでしょう。