【Excel VBA】新しいワークシートを追加し、名前と位置を指定する方法

VBAで集計結果を出力したり、作業用の一時的なシートを作成したりと、マクロの実行中に新しいワークシートを追加したい場面は頻繁にあります。

Worksheets.Addメソッドを使えば簡単にシートを追加できますが、その名前を変更したり、ブックの特定の位置(先頭や末尾など)に追加したりする方法も知っておくと、より高度な操作が可能になります。

この記事では、新しいシートを追加するための基本から、挿入位置を自在にコントロールする応用テクニックまでを解説します。


目次

基本的なシートの追加と命名

まず、新しいシートを追加し、そのシートに名前を付ける基本的な方法です。ここでのポイントは、追加したシートをオブジェクト変数に格納することです。

完成したVBAコード

Sub AddAndNameNewSheet()

    ' Worksheetオブジェクトを格納する変数を宣言します
    Dim newSheet As Worksheet
    
    ' 新しいワークシートを追加し、そのオブジェクトを変数に格納します
    ' これにより、今追加したシートを確実に操作できます
    Set newSheet = ThisWorkbook.Worksheets.Add
    
    ' オブジェクト変数経由で、新しいシートの名前を変更します
    newSheet.Name = "VBA作成レポート"
    
    MsgBox "「" & newSheet.Name & "」という名前のシートを追加しました。"

End Sub

コードのポイント解説

  • Set newSheet = Worksheets.Add: Worksheets.Addは、新しいシートを追加すると同時に、追加されたWorksheetオブジェクトそのものを返します。これをSetを使って変数(newSheet)に格納することで、その後のコードで「たった今追加したシート」を正確に参照できます。
  • newSheet.Name = "...": オブジェクト変数を使えば、ActiveSheet.Nameのように曖昧な指定をせずとも、newSheetという名前で直接、かつ安全にプロパティ(ここでは名前)を変更できます。

シートを追加する位置を指定する方法

Worksheets.Addメソッドには、BeforeまたはAfterという引数を指定することで、シートを挿入する位置を自由にコントロールできます。

Before引数:指定したシートの前に挿入

指定したシートの左隣に、新しいシートが追加されます。

Sub AddSheetBefore()
    ' 「Sheet1」の前に新しいシートを追加
    Worksheets.Add Before:=Worksheets("Sheet1")
End Sub

After引数:指定したシートの後に挿入

指定したシートの右隣に、新しいシートが追加されます。

Sub AddSheetAfter()
    ' 「Sheet1」の後に新しいシートを追加
    Worksheets.Add After:=Worksheets("Sheet1")
End Sub

【応用】ブックの一番最後にシートを追加する

実務で最もよく使われるのが、「ブックの一番右端(末尾)にシートを追加する」という処理です。これはAfter引数とWorksheets.Count(シートの総数)を組み合わせることで実現できます。

Sub AddSheetToEnd()
    Dim lastSheet As Worksheet
    Dim newReportSheet As Worksheet
    
    ' 現在のブックの最後のシートを取得
    Set lastSheet = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
    
    ' 最後のシートの後ろに、新しいシートを追加
    Set newReportSheet = ThisWorkbook.Worksheets.Add(After:=lastSheet)
    
    newReportSheet.Name = "最終レポート"
    MsgBox "ブックの末尾に「" & newReportSheet.Name & "」シートを追加しました。"
End Sub

Worksheets(Worksheets.Count)でブックの最後のシートを特定し、そのAfter(後ろ)に新しいシートを追加しています。


まとめ

VBAで新しいシートを追加する際の基本と応用は、以下の通りです。

  • 基本: Set mySheet = Worksheets.Add で、追加したシートを変数に格納する
  • 位置指定: BeforeまたはAfter引数を使う。
    • Worksheets.Add Before:=Worksheets("既存のシート名")
    • Worksheets.Add After:=Worksheets("既存のシート名")
  • 末尾に追加: Worksheets.Add After:=Worksheets(Worksheets.Count)

これらのテクニックをマスターすれば、レポートの自動生成など、マクロでできることの幅が大きく広がります。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次