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

 

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

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

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

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

・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

2025年解消したい。「毎日、やることが多すぎて…そんなあなたへ」
👉詳細はこちら

・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

2025年解消したい。「毎日、時間に追われて余裕がない…そんなあなたへ」
👉クリックして、もっと効率的に作業する方法の詳細はこちら

・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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!