← コード一覧へ戻る
実務シート

ワークシートの名前を設定する(追加時に名前を付ける場合)

Worksheets.Addでブックの右端に1枚追加し、Nameで「新規集計」と名付けます。Setの意味、追加前後の並び、同名シートや構成保護がある場合の中止を説明します。

実行前に確認

  • コピーした練習用ブックで試してください。VBAの変更は通常の[元に戻す]で戻せません。この例はデスクトップExcel向けで、Excel上での実行検証は未実施です。
  • 固定名「新規集計」を使う例です。sheetNameを変える場合は、空欄・31文字超・使用できない記号などの名前制約も確認してください。ここでは任意入力の名前を検証する機能は実装していません。
  • 追加前にすべてのSheetsの名前を比較します。ワークシートだけを調べると、同名のグラフ専用シートを見落とします。シートの削除や上書きは行いません。
  • 追加後の予期しないエラーまで自動復旧する例ではありません。変更した名前が不正な場合など、追加済みの空シートが残ることがあります。再実行する前にブックの状態を確認してください。

1サンプルコード

Option Explicit

Sub Sample3015()
    Dim sheet As Object
    Dim newSheet As Worksheet
    Const sheetName As String = "新規集計"

    If ThisWorkbook.ProtectStructure Then
        MsgBox "ブックの構成が保護されているため追加しません。"
        Exit Sub
    End If

    For Each sheet In ThisWorkbook.Sheets
        If StrComp(sheet.Name, sheetName, vbTextCompare) = 0 Then
            MsgBox "新規集計は既にあります。追加しません。"
            Exit Sub
        End If
    Next sheet

    Set newSheet = ThisWorkbook.Worksheets.Add( _
        After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    newSheet.Name = sheetName
End Sub

図で見るシート追加と名前確認

イメージ図

説明用の想定例です。左から「売上」「経費」の2枚がある練習用ブックを使います。

  1. 実行前:2枚

    売上 → 経費。新規集計という名前はまだない

  2. 事前確認

    構成保護があれば中止。Sheets全体を調べ、同名なら種類を問わず中止

  3. 追加:Setで受け取る

    全シートの右端にワークシート1枚を追加し、newSheet変数で参照する

  4. 実行後:3枚

    Nameを設定し、売上 → 経費 → 新規集計 になる

再実行時は同名チェックで終了し、3枚のままです。グラフ専用シートの同名も検出します。実際のExcel実行結果ではなくコードから説明した想定例です。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する7つの手順で、コードの使い方を確認できます
  1. 1

    準備:デスクトップ版Excelでコピーした練習用ブックを.xlsm形式で保存します。例では左から「売上」「経費」の2枚を用意し、「新規集計」がないことを確認します。このコードを練習用ブックの標準モジュールへ貼り付けます。

  2. 2

    実行:Alt+F11→[挿入]→[標準モジュール]でコードを貼り付け、Sample3015内にカーソルを置いてF5を押します。ThisWorkbookはコードを保存したブックを指します。別のブックを画面で選択しても対象は変わりません。

  3. 3

    想定結果:売上 → 経費 の並びが、売上 → 経費 → 新規集計 になります。追加した1枚がアクティブになり、既存のセル内容は書き換えません。このマクロに保存処理はありません。

  4. 4

    読み方:Dim newSheet As Worksheetは変数の宣言だけです。Set newSheet = ...Add(...)で、追加したシートへの参照を受け取ります。newSheetは自由に名付けた変数で、VBAの専用命令でもタブ名でもありません。newSheet.Name = sheetNameがタブ名を変更する行です。

  5. 5

    位置:Afterにはブック内の最後のSheetsを渡します。Sheetsにはグラフ専用シートも含まれるので、その後ろに追加できます。BeforeとAfterを両方省くとアクティブシートの前になるため、この例ではAfterを省略しません。

  6. 6

    再実行:1回目に作った「新規集計」があるため、2回目はメッセージを表示して終了し、枚数は増えません。同じ名前のグラフ専用シートがある場合も追加前に中止します。

  7. 7

    保護されている場合:ブックの構成保護を検出して中止します。コードで保護は解除しません。構成保護と個別ワークシートのセル保護は別の設定です。

使っている機能の公式ドキュメント(Microsoft Learn)