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

月ごとのシートを自動で作る

今月の名前でシートを作ります。同じ名前がある場合は作りません。

実行前に確認

  • ブック構成が保護されていると追加できません。今月だけを作る例で、12か月分を一括作成するコードではありません。

1サンプルコード

Sub 今月のシートを作る()
    Dim sheetName As String
    Dim ws As Object
    Dim exists As Boolean

    sheetName = Format(Date, "yyyy年mm月")

    For Each ws In ThisWorkbook.Sheets
        If ws.Name = sheetName Then
            exists = True
            Exit For
        End If
    Next ws

    If exists = False Then
        ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = sheetName
    End If
End Sub

図で見る操作の流れ

イメージ図

コードの動きを表した概念図です。実際のExcel画面ではありません。

  1. マクロ:今月の名前を作る

    実行日の年月を「yyyy年mm月」の形にする

  2. マクロ:全シートを確認

    同じ名前のシートが既にあるか調べる

  3. 同名がない場合

    ブックの末尾へ1枚追加し、今月の名前を付ける

同名シートがあれば何も追加しません。12か月分ではなく今月の1枚だけです。ブック構成の保護中は追加できません。

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

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

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    コードを保存したブックが対象です。Format(Date, "yyyy年mm月")がシート名を決める箇所なので、通常は書き換えずに使います。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。

  4. 4

    今月の年月を名前にしたシートが最後に1枚追加されます。同名のシートが既にある場合は何もしません。

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