【Excel VBA】マクロを実行する度に前回作成したシート名の数字に「+1(プラス1)」して連番のシート作成・処理する(数字と文字列を組み合わせたシート名作成)

目次

マクロの内容

調べてみたけれど、意外となかった…。

マクロを実行する度に全てのシート確認して、前回のシート名の数字に「+1」をしたシートを作成する手順です。

今回は、例として、「第XX期」というシートをマクロを実行するたびに作成するようにしました。
(イメージとしては、「第01期」「第02期」「第03期」… と増えます。)

        Dim i As Long, cnt As Long
        Dim prd_cnt As String

        'シートを全てチェックして、「第XX期」と名前がついているものを全てカウント。
        For i = 1 To Worksheets.Count
            If Worksheets(i).Name Like "第" & "[0-9][0-9]" & "期" Then cnt = cnt + 1
        Next i

        'カウントした数「+1」したものを「prd_cnt」として、Format関数を使って二桁表示に置き換える。(1なら「01」になる)
        'ここを三桁にしたい場合は、「"000"」に変えます。
        prd_cnt = Format(cnt + 1, "00")

        'シート名を「"第XX期"」に変更。
        ActiveSheet.Name = "第" & prd_cnt & "期"
        

ベースのテンプレートをコピーして「+1」したシートを作成

ちなみに、他のシートをコピーして使いたいときはこんな感じに。
(非表示にしているテンプレートシートをコピーして使ってます。)

 'コピー元になる「テンプレート」を指定
        Dim Sht_Template As Worksheet: Set Sht_Template = Worksheets("テンプレートシート名")
        
        'テンプレートを一度表示させてシートコピー処理。再度非表示に戻す
        With Sht_Template
            .Visible = True
            .Activate
            .Copy after:=追加したい場所の手前にあるシート名
            .Visible = False
        End With



        Dim i As Long, cnt As Long
        Dim prd_cnt As String

        'シートを全てチェックして、「第XX期」と名前がついているものを全てカウント。
        For i = 1 To Worksheets.Count
            If Worksheets(i).Name Like "第" & "[0-9][0-9]" & "期" Then cnt = cnt + 1
        Next i

        'カウントした数「+1」したものを「prd_cnt」として、Format関数を使って二桁表示に置き換える。(1なら「01」になる)
        'ここを三桁にしたい場合は、「"000"」に変えます。
        prd_cnt = Format(cnt + 1, "00")

        'シート名を「"第XX期"」に変更。
        ActiveSheet.Name = "第" & prd_cnt & "期"
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次