月次レポートのために「4月」「5月」…「3月」という12枚のシートを用意したり、支店ごとの集計シートを「支部01」「支部02」…と連番で作成したりする作業は、手作業では非常に面倒です。
VBAの**For...NextループとWorksheets.Addメソッドを組み合わせることで、このような連番シートの作成を瞬時に自動化**することが可能です。
この記事では、指定した数だけ、連番の名前を持つワークシートをブックの末尾に一括で追加する方法を解説します。
完成したVBAコード
以下が、ブックの最後に「Report_1」から「Report_12」までの12枚のシートを連続して追加するVBAコードです。
Sub CreateMultipleSheets()
' 変数を宣言します
Dim i As Long
Dim sheetCount As Long
Dim sheetNameBase As String
'--- 設定箇所 ---
sheetCount = 12 ' 作成したいシートの枚数
sheetNameBase = "Report_" ' シート名の接頭辞(プレフィックス)
'--- 設定ここまで ---
' 画面更新を一時的にオフにして処理を高速化
Application.ScreenUpdating = False
' --- Forループで指定した回数だけ処理を繰り返す ---
For i = 1 To sheetCount
' 1. ブックの末尾に新しいシートを追加
' Worksheets.Countで現在の最後のシートを特定し、その「After」に配置
ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
' 2. 新しく追加されたシートの名前を変更
' .Addメソッドで追加されたシートはアクティブになるので、ActiveSheetで操作できる
ActiveSheet.Name = sheetNameBase & i
Next i
' 画面更新をオンに戻す
Application.ScreenUpdating = True
MsgBox sheetCount & "枚のシートを作成しました。"
End Sub
コードのポイント解説
① For…Next ループ
For i = 1 To sheetCount
' ... 繰り返したい処理 ...
Next i
For...Nextステートメントは、VBAで繰り返し処理を行う際の基本です。i = 1 To sheetCountと記述することで、カウンター変数iの値を1からsheetCount(この例では12)まで1ずつ増やしながら、間の処理を繰り返します。
② ブックの末尾にシートを追加
ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Worksheets.AddメソッドのAfter引数に、ブックの最後のシートを指定することで、常に新しいシートが一番右端に追加されるようにしています。 ThisWorkbook.Worksheets.Countは、現在のシートの総数を返すため、ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)は常に一番右端のシートを指します。
③ 連番の名前を設定
ActiveSheet.Name = sheetNameBase & i
Worksheets.Addで追加されたシートは、その時点でアクティブなシート(ActiveSheet)になります。その.Nameプロパティに対し、設定した接頭辞(sheetNameBase)とループのカウンター変数iを&で連結した文字列を代入します。
これにより、ループが回るたびにiの値が1, 2, 3…と増え、「Report_1」「Report_2」「Report_3」…という連番の名前が付けられていきます。
【応用】ゼロ埋め(01, 02…)の連番にする方法
連番を「1, 2…」ではなく「01, 02…」のように桁数を揃えたい場合は、Format関数を使います。
上記のコードのシート名を付ける部分を、以下のように変更します。
' 変更前
' ActiveSheet.Name = sheetNameBase & i
' 変更後:Format関数で数値を「00」という書式に変換
ActiveSheet.Name = sheetNameBase & Format(i, "00")
Format(i, "00")は、数値iを「常に2桁で、1桁の場合は左を0で埋める」という書式の文字列に変換します。これにより、「Report_01」「Report_02」…「Report_12」といった名前を付けることができます。
まとめ
連番シートの一括作成は、Forループの典型的な活用例です。
For i = 1 To 作成枚数でループの骨格を作る。- ループの中で**
Worksheets.Add After:=...**を使い、シートを常に末尾に追加する。 - 追加した
ActiveSheetの.Nameプロパティに、接頭辞とループ変数iを連結した名前を設定する。
このパターンを覚えておけば、面倒な定型シートの準備作業を大幅に効率化できます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
