📊 Excel VBA Top100
📋

AddNewSheet

シート管理

新規ワークシートを追加する

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

AddNewSheet デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(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