Excelで全シートに同じマクロを適用する方法と簡単サンプル

Visual Basic

Excelで複数のシートに同じ処理を自動で適用したい場合、Worksheet_Change イベントではシートごとに個別に記述する必要があります。全シートで同じ処理を行いたい場合は、標準モジュールに汎用マクロを作成し、各シートのイベントから呼び出す方法が簡単です。

標準モジュールにマクロを作成

まず、標準モジュールに以下のサブルーチンを作成します。

Public Sub ProcessCellChange(ByVal Target As Range)
    If Intersect(Target, Target.Worksheet.Range("D74:D7")) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    Dim x As Variant, y As Variant
    x = Target.Value
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Undo
        y = Target.Value
        Target.Value = x + y
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

各シートのWorksheet_Changeで呼び出す

各シートのコードウィンドウに以下を記述します。これで全シート共通の処理が実行されます。

Private Sub Worksheet_Change(ByVal Target As Range)
    Call ProcessCellChange(Target)
End Sub

ポイントと注意

  • 標準モジュールに処理をまとめることで、修正も一箇所で済む
  • 各シートから呼び出すだけで同じ処理を適用可能
  • Intersect で対象範囲を指定しているため、必要に応じて範囲を調整
  • Undo を使用して前の値を取得する方式のため、EnableEvents をオフにして無限ループ防止

まとめ

Excelで全シートに同じマクロを実行させたい場合は、標準モジュールに汎用サブルーチンを作成し、各シートの Worksheet_Change イベントから呼び出す方法が最もシンプルです。これにより、修正やメンテナンスも容易になり、全シートで同じ処理を自動的に実行できます。

コメント

タイトルとURLをコピーしました