Vba: セル値が変更されたときにマクロを実行する方法
VBA で次の構文を使用すると、特定のセルの値が変更されたときにマクロを実行できます。
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = " $A$1 " Then
Call MultiplyMacro
End If
End Sub
この特定の例では、セルA1の値が変更されたときにMultiplyMacroというマクロが実行されます。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用してセル値が変更されたときにマクロを実行する
セルA1とB1の値を乗算し、結果をセルC1に表示するMultiplyMacroという次のマクロを作成するとします。
SubMultiplyMacro ()
Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub
たとえば、セルA1に値12 があり、セルB1に値3 があるとします。
このマクロを実行すると、次の結果が返されます。
ここで、セルA1の値が変更されるたびにこのマクロを自動的に実行するとします。
これを行うには、シート名を右クリックし、 [コードの表示]をクリックします。
表示されるコード編集ウィンドウで、次のコードを貼り付けることができます。
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = " $A$1 " Then
Call MultiplyMacro
End If
End Sub
次のスクリーンショットは、実際にこれを行う方法を示しています。
その後、VB エディタを閉じます。
これで、セルA1の値を変更するたびに、 MultiplyMacroというマクロが自動的に実行され、セルA1の新しい値を使用して乗算が実行されます。
たとえば、セルA1の値を10に変更するとします。値を変更してEnterを押すとすぐに、マクロが実行されます。
マクロは 10 と 3 を乗算し、結果をセルC2に表示します。
注: 特定の範囲のセルが変更されたときにマクロを実行する場合は、次の構文を使用できます。
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
Call MultiplyMacro
End If
End Sub
これにより、範囲A1:B1内のいずれかのセルが変更された場合に、 MultiplyMacroというマクロが実行されます。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: ワークブック内のシート数を数える方法
VBA: 別のブックからデータを抽出する方法
VBA: 新しいシートを追加する方法