【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)

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

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

この記事を書いた人

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

目次