ワークシートの追加

今回は、VBAから特定の名前(Name)でワークシートを作成してみましょう。エクセルには、特定のシートの特定のセル範囲にデータを取得したり、特定のシートの特性のセル範囲に対して集計を行うような機能があるので、実行時に動的に任意の名前でシートを作成できれば、既存のワークシートに影響を及ぼさない作業用のワークシートとして利用できるので、便利です。

VBAから新規のワークシートを作成するには、SheetsオブジェクトのAddメソッドを呼び出します。これで、新しいワークシートが作成され、その参照が返されるのですが、その名前は「Sheet4」などとなっているので、自分で名前を付ける場合はAddで返される参照をWorksheet型変数に格納し、Nameプロパティを設定しましょう。

  Set testSheet = Sheets.Add

  testSheet.Name = "testSheet1"

ただ、すでに同じ名前のシートがあると、名前の設定時にエラーになります。アプリケーションで独自に作業用のワークシートを作成するような場合は、「クリアされた特定の名前のシート」が欲しいわけですから、まず最初にすでに指定の名前のワークシートがあるか確認し、なければワークシートを作成、という流れにした方が良さそうですね。
ワークブック内のワークシートの一覧は、ワークブックのWorksheetsプロパティを参照すると得られるので、そうした処理は以下のように書くことができます。

  Dim testSheet As Worksheet
  Dim existSheet As Boolean

  existSheet = False

  For Each s In Worksheets
    If s.Name = "testSheet" Then

      Set testSheet = s

      existTest = True

      End If
  Next

  If Not existSheet Then

    Set testSheet = Sheets.Add

    testSheet.Name = "testSheet1"

  End If

  testSheet.Activate

これで「(存在しなければ新規に作成された)testSheet1という名前のワークシート」がアクティブになったので、後は一度使用するセル範囲をクリアしてから作業を行えば良いでしょう。


エクセルVBA練習帳