Excel で特定のセルが変更されたときにマクロを実行する方法

概要

Microsoft Excel では、特定のシートまたは現在開いているシートのセルに値が入力されたときにのみ呼び出されるマクロを作成できます。

ただし、Excel のパフォーマンスが低下するため、不必要にマクロを呼び出さないでください。

詳細

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。 多くの場合、特定の数のセルに値が入力されているときにのみマクロを実行する必要があります (このドキュメントでは「キー セル」と呼びます)。 シートのセルに値が入力されるたびに大きなマクロが実行されないようにするには、ActiveCell がキー セルの 1 つであるかどうかを確認する必要があります。 これを行うには、ActiveCell およびキー セルを含む範囲で Intersect メソッドを使用し、ActiveCell がキー セルの 1 つであることを確認します。 ActiveCell がキー セルを含む範囲内にある場合、マクロを呼び出すことができます。

Visual Basic マクロを作成するには、次の手順を実行します。

  1. [Sheet1] タブを右クリックし、[コードの表示] をクリックします。

    Sheet1 の背後にあるモジュール シートが開きます。

  2. 次のコードをモジュール シートに入力します。

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
        ' cause an alert when they are changed.
        Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
    
    ' Display a message when one of the designated cells has been 
            ' changed.
            ' Place your code here.
            MsgBox "Cell " & Target.Address & " has changed."
    
    End If
    End Sub
    
  3. [ファイル] メニューの [終了して Microsoft Excel へ戻る] をクリックします。

Sheet1 のセル A1:C10 にエントリを入力すると、メッセージ ボックスが表示されます。