「シート操作の応用」を掘り下げてみましょう。基礎の「追加・削除・名前変更」から一歩進んで、複数シートをまとめて扱う・条件付きで操作する・コピーや移動を駆使するといった実務的なテクニックを紹介します。
1. 複数シートをまとめて処理
全シートに同じ処理をするのはよくあるパターンです。
Sub AllSheetsTitle()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Range("A1").Value = "月次レポート"
ws.Range("A1").Font.Bold = True
Next ws
End Sub
VB👉 ポイント
For Each ws In Worksheetsで全シートを順番に処理- 各シートのA1に同じタイトルを入れる
2. 条件付きでシートを操作
シート名や特定の条件に応じて処理を分けられます。
Sub HideTempSheets()
Dim ws As Worksheet
For Each ws In Worksheets
If Left(ws.Name, 4) = "TEMP" Then
ws.Visible = xlSheetHidden
End If
Next ws
End Sub
VB👉 ポイント
Left(ws.Name, 4)でシート名の先頭4文字を判定- 条件に合うシートを非表示に
3. シートのコピー・移動
テンプレートを複製して使うのも実務でよくあります。
Sub CopyTemplate()
Worksheets("Template").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "新規レポート"
End Sub
VB👉 ポイント
Copyでシートを複製After:=Worksheets(Worksheets.Count)で最後に追加ActiveSheet.Nameでコピー直後のシート名を変更
4. シートを安全に削除
削除時の確認メッセージを抑制して一気に処理できます。
Sub DeleteEmptySheets()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In Worksheets
If WorksheetFunction.CountA(ws.Cells) = 0 Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub
VB👉 ポイント
CountA(ws.Cells)でシート内のデータ数を確認- 空シートだけ削除
5. シートを並べ替える
シートの順番を整理することも可能です。
Sub MoveSummaryToFirst()
Worksheets("集計").Move Before:=Worksheets(1)
End Sub
👉 ポイント
Moveでシートを移動BeforeやAfterを指定して位置を決める
まとめ
- 全シート処理 → For Each で一括操作
- 条件付き処理 → 名前や中身で判定
- コピー・移動 → テンプレートや順序整理に便利
- 削除 → 空シートや不要シートを自動で消す
次のステップとしては、
- 「セル操作」と「シート操作」を組み合わせて、複数シートのデータを集計する」
- 「新しいブックを作って、シートごとに保存する」
こうした応用に進むと一気に「実務で使えるVBA」になります。
