【脱・単純作業】その3秒を0秒に。「新しいシートを追加して名前をつける」VBA術

【業務効率化】VBA
スポンサーリンク

1. 基本の「き」:シートを追加するだけ

まずは、シンプルにシートを追加するだけのコードです。

手で「+」ボタンを押すのと同じ動きをします。

Sub シートを追加する()
    ' 新しいシートを先頭に追加します
    Worksheets.Add
End Sub

これだと、シートが一番「左(先頭)」に追加されます。「あれ?いつも右側に追加されるのに…」と違和感がありますよね。

【業務効率化】VBAの記事を見る

2. 本題:一番後ろに追加して、名前をつける

ここからが本番です。

「一番右(最後尾)に追加」して、「すぐに名前をつける」。

これを人間がやるとマウス操作が3回必要ですが、VBAなら一瞬です。

以下のコードをコピーして使ってください。

Sub シートを追加して名前を変える()
    Dim NewSheetName As String
   
    ' ▼ここにつけたい名前を入れてください
    NewSheetName = "集計用データ"

    ' シートを一番後ろ(Worksheets.Countの後)に追加して、名前を変更
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = NewSheetName
   
    MsgBox "シート「" & NewSheetName & "」を作成しました!", vbInformation
End Sub

解説(ざっくりでOKです):

  • Worksheets.Add :シートを追加せよ!という命令。
  • After:=Worksheets(Worksheets.Count) :「今あるシートの枚数分(Count)数えた、その後ろ(After)」=「一番後ろ」という意味です。
  • .Name = :そのままずばり、名前をつける命令です。

1シート作るだけなら、わざわざコードを書く必要なんてありませんが、これが「毎月12枚」や「拠点ごとに数十枚」となると、VBAの真価が発揮されます。

3. 応用編:47都道府県のシートを一括作成する

というわけで「一括で大量のシートを作る」ためのコードがこちらです。

配列(Array)という箱に名前を詰め込んで、一気にループ処理を行います。

47都道府県分のシート作成でもこのコードなら1~2秒で終わります。

Sub 都道府県シートを一括作成()
    Dim prefNames As Variant
    Dim i As Long

    ' 47都道府県の名前を配列に格納
    prefNames = Array("北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", _
                      "茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", _
                      "新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県", _
                      "静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県", _
                      "奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県", _
                      "徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県", _
                      "熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県")

    ' 高速化のため画面更新を停止
    Application.ScreenUpdating = False

    For i = LBound(prefNames) To UBound(prefNames)
        ' 最後尾に追加して名前を設定
        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = prefNames(i)
    Next i

    ' 画面更新を再開
    Application.ScreenUpdating = True

    MsgBox "47都道府県のシートを作成しました!", vbInformation
End Sub

4. 注意点:シート名の重複はNG

Excelの仕様上、同じ名前のシートは1つのブック内に2枚存在できません。 

もし同じ名前のシートがすでにある状態で実行すると、エラー(黄色いデバッグ画面)が表示されます。

その場合は「終了」ボタンを押し、シート名を変更するか、既存のシートを削除してから再度実行してくださいね。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました