📋
AddNewSheet
シート管理新規ワークシートを追加する
VBAで新しいワークシートを自動追加するマクロです。Worksheets.Addメソッドを使ってシートを指定位置に挿入し、任意の名前を付けることができます。ループ処理と組み合わせて月別・部署別など複数シートを一括作成することも可能です。既存シート名との重複チェックや、シートの色分け設定も組み込むことで業務効率が大幅に向上します。内部ではWorksheets.Addメソッドの戻り値を変数で受け取り、そのままNameプロパティで名前を設定する流れが基本形です。CopySheetがテンプレートを複製するのに対し、本マクロは空白の新規シートを作る点が異なり、まっさらな状態から構築したい場合に適しています。SortSheetsByNameと組み合わせれば、追加後に整った順序を自動維持できます。手動での右クリック→挿入という操作を1回のマクロ実行に置き換えられます。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行するとシート名を入力するダイアログが表示され、新しいシートが作成される
🎯 活用シーン
- ✓12ヶ月分のシートを月名付きで一括作成
- ✓テンプレートシートを複製して新規プロジェクト用シートを追加
- ✓データ入力フォームから動的にシートを作成する処理
- ✓新規プロジェクト開始時に必要な空白シート一式をテンプレート化して一括生成したいとき
- ✓顧客ごとに個別シートを追加していく管理台帳で、追加作業を定型化したいとき
💡 実装のヒント
- ▸After引数で追加位置(最後尾など)を指定できます
- ▸Name プロパティでシート名を即座に変更します
- ▸On Error Resume Next で重複名エラーを回避できます
- ▸追加直後のシートには既定の書式しか設定されていないため、SetCellStyleなどと組み合わせて初期デザインを整える運用が便利です。
- ▸大量にシートを追加する場合はApplication.ScreenUpdatingをFalseにすることで画面のちらつきを抑え処理を高速化できます。
💻 VBAコード
' AddNewSheet
' -----------------
' Macro Name: AddNewSheet
' Description: 新規ワークシートを追加する
' Parameters: なし
' Returns: なし
' Usage: 実行するとシート名を入力するダイアログが表示され、新しいシートが作成される
' -----------------
Sub AddNewSheet()
Dim ws As Worksheet
Dim sheetName As String
Dim i As Long
On Error GoTo ErrorHandler
sheetName = InputBox("作成するシート名を入力してください:", "新規シート作成")
If sheetName = "" Then
MsgBox "キャンセルされました。", vbInformation
Exit Sub
End If
For Each ws In Worksheets
If ws.Name = sheetName Then
MsgBox "「" & sheetName & "」は既に存在します。", vbExclamation
Exit Sub
End If
Next ws
Set ws = Worksheets.Add(After:=Worksheets(Worksheets.Count))
ws.Name = sheetName
MsgBox "「" & sheetName & "」を作成しました。", vbInformation
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub