Excel VBA ブック内のすべてのシートに対して同じ処理を行う方法

 

Excel VBA ブック内のすべてのシートに対して同じ処理を行う方法。例えば、すべてのシートのデータを変更したり、特定の値を検索・集計するのに便利です。 使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA 全シート同じ処理|シーン

以下のシーンで利用します。

1.すべてのシートのA1セルにタイトルを挿入する。

2.シートごとのデータを集計して別のシートにまとめる。

3.すべてのシートの特定のセル範囲をクリアする。

4.シートごとに異なる処理を実行する(例: シート名ごとに条件分岐)

 

Excel VBA 全シート同じ処理サンプルコード

すべてのシートのA1セルに「データ更新済み」と入力する

Option Explicit

Sub 全シートループ処理()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Range("A1").Value = "データ更新済み"
    Next ws
End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

・ThisWorkbook.Worksheets を For Each でループすることで、すべてのシートを順番に処理します。
・ws.Range("A1").Value = "データ更新済み" で、各シートのA1セルにテキストを入力します。

全シートの2行目以降のデータをクリアする(ヘッダーは残す)

Option Explicit

Sub シートのデータクリア()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Range("A2:Z1000").ClearContents ' A2:Z1000の内容をクリア
    Next ws
End Sub

 

・ClearContents を使用することで、セルの内容のみを削除し、書式は維持できます。
・A2:Z1000 の範囲を指定することで、ヘッダー(1行目)を残してデータだけを削除できます。

シート名ごとに処理を変える

Option Explicit

Sub シート名ごとの処理()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        Select Case ws.Name
            Case "売上データ"
                ws.Range("B2").Value = "売上更新"
            Case "在庫データ"
                ws.Range("B2").Value = "在庫確認"
            Case Else
                ws.Range("B2").Value = "その他シート"
        End Select
    Next ws
End Sub

 

・Select Case ws.Name を使うことで、シート名ごとに異なる処理を実行できます。
・"売上データ" では B2 に「売上更新」、 "在庫データ" では「在庫確認」とし、それ以外は「その他シート」と表示します。

使い方

For Each 文を使って Worksheets コレクションをループすることで、すべてのシートにアクセスできます。

注意点

・For Each を使用すると、非表示のシートも含めてループされます。
・ActiveSheet を変更する場合、不要なアクティブ化を避けるために With ステートメントを活用するとよいです。
・シート名の変更や削除により、参照エラーが発生する場合があるので注意が必要です。

 

Excel VBA 全シート同じ処理まとめ

・全シートに一括で処理を適用する場合は For Each ws In ThisWorkbook.Worksheets を使う。

・非表示シートも含めたくない場合は If ws.Visible = True Then を使う。

・シート名ごとに処理を分岐させるなら Select Case ws.Name を活用

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問