Excel VBA | 「セル操作」と「シート操作」

Excel VBA VBA
スポンサーリンク

「シート操作の応用」を掘り下げてみましょう。基礎の「追加・削除・名前変更」から一歩進んで、複数シートをまとめて扱う・条件付きで操作する・コピーや移動を駆使するといった実務的なテクニックを紹介します。


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 でシートを移動
  • BeforeAfter を指定して位置を決める

まとめ

  • 全シート処理 → For Each で一括操作
  • 条件付き処理 → 名前や中身で判定
  • コピー・移動 → テンプレートや順序整理に便利
  • 削除 → 空シートや不要シートを自動で消す

次のステップとしては、

  • 「セル操作」と「シート操作」を組み合わせて、複数シートのデータを集計する」
  • 「新しいブックを作って、シートごとに保存する」

こうした応用に進むと一気に「実務で使えるVBA」になります。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました