Categories: excel

VBAでExcelシートを追加する方法を徹底解説

Excelを使っていると、毎回新しいシートを作成して名前を変更したり、順番を入れ替えたりするのが手間に感じることはありませんか?
そんな時に便利なのが「VBA(Visual Basic for Applications)」です。VBAを使えば、たった1回のクリックで必要な数のシートを追加し、好きな位置や名前を指定することもできます。

この記事では、VBAを使ってExcelシートを追加する方法について、初心者にもわかりやすく、実践的なコード例と一緒に解説していきます。日々の業務効率化や、自動化スキルの向上にもつながる内容ですので、ぜひ参考にしてください。


VBAとは?シート追加に使えるExcelの自動化ツール

VBA(Visual Basic for Applications)は、Microsoft Officeに組み込まれているプログラミング言語で、Excelの操作を自動化するのに使われます。
手作業で行っていた「新しいシートの追加」も、VBAを使えばボタンひとつで完了します。しかも、単に追加するだけでなく、「特定の名前をつける」「順番を指定する」「複数枚を一度に追加する」といった細かな指定も可能になります。


最も基本的なシート追加コード

まずは、一番シンプルなコードから見てみましょう。

Sub AddSheetSimple()
Sheets.Add
End Sub

このコードを実行することで、現在アクティブなシートの前に新しいシートが1枚追加されます。名前は自動で「Sheet1」「Sheet2」と連番になります。


シートの名前を指定して追加する方法

ただシートを追加するだけではなく、自分で名前をつけたい場合は以下のように書きます。

Sub AddNamedSheet()
Dim newSheet As Worksheet
Set newSheet = Sheets.Add
newSheet.Name = "売上集計"
End Sub

このようにすると、追加されたシートに「売上集計」という名前がつきます。すでに同じ名前のシートが存在する場合はエラーになるので、事前に確認する処理を入れるのもおすすめです。


追加する位置を指定するには

シートはデフォルトではアクティブシートの前に追加されますが、位置を指定することもできます。

Sub AddSheetToEnd()
Sheets.Add After:=Sheets(Sheets.Count)
End Sub

このコードは、ワークブックの一番最後にシートを追加する方法です。逆に、最初に追加したい場合は Before:=Sheets(1) と書き換えます。


複数のシートをまとめて追加する方法

毎月の帳票などで、複数のシートを一気に作成したいときは、ループを使います。

Sub AddMultipleSheets()
Dim i As Integer
For i = 1 To 3
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "月別" & i
Next i
End Sub

このコードでは、「月別1」「月別2」「月別3」という名前のシートが3枚連続して追加されます。


すでにあるシート名とかぶらないようにするには

シート名が重複するとエラーになるため、事前に存在チェックをしてから追加する方法も紹介します。

Function SheetExists(sheetName As String) As Boolean
Dim ws As Worksheet
On Error Resume Next
Set ws = Sheets(sheetName)
On Error GoTo 0
SheetExists = Not ws Is Nothing
End Function

Sub AddSafeSheet()
Dim name As String
name = "売上集計"

If SheetExists(name) Then
MsgBox "すでにシートがあります。"
Else
Sheets.Add.Name = name
End If
End Sub

これで、同じ名前のシートがある場合には追加せず、メッセージを表示する処理が実現できます。


シート追加の処理にボタンをつける方法

VBAは「開発」タブからボタンに割り当てて使うと便利です。

  1. Excelの「開発」タブを開く
  2. 「挿入」→「フォームコントロール」→「ボタン」を選択
  3. ワークシート上にボタンを配置
  4. 実行したいマクロを割り当てる

これで、クリックするだけでシートを自動で追加できるようになります。


よくあるエラーとその対処法

名前が重複している場合

シート名の確認を事前に行いましょう(前述コード参照)。

Sheets.Addでエラーが出る場合

→ ブックが保護されていないか確認してください。保護されているとシート追加ができません。

If ThisWorkbook.ProtectStructure = True Then
MsgBox "シートの追加が許可されていません"
End If

実務に役立つ応用例:週報テンプレートを自動作成

毎週の報告用に「Week1」「Week2」…「Week52」といったシートを一気に作る場合のコードです。

Sub CreateWeeklySheets()
Dim i As Integer
Dim sheetName As String

For i = 1 To 52
sheetName = "Week" & i
If Not SheetExists(sheetName) Then
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = sheetName
End If
Next i
End Sub

これを使えば年間のテンプレートを一気に準備できます。毎回手作業で追加する手間が省けて非常に便利です。


まとめ:VBAでのシート追加は時短の第一歩!

VBAを使ってExcelのシートを追加することは、初心者でもすぐにマスターできるスキルです。業務効率化の第一歩として、自動でシートを作成できるだけでも、作業時間は大きく短縮されます。
まずは基本の Sheets.Add を覚え、名前や位置の指定、エラー処理、ループ処理といった応用まで少しずつ試してみましょう。きっとあなたのExcel作業が、もっとスマートで快適なものになるはずです。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。