Vba: セル値が変更されたときにマクロを実行する方法


VBA で次の構文を使用すると、特定のセルの値が変更されたときにマクロを実行できます。

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

この特定の例では、セルA1の値が変更されたときにMultiplyMacroというマクロが実行されます。

次の例は、この構文を実際に使用する方法を示しています。

例: VBA を使用してセル値が変更されたときにマクロを実行する

セルA1B1の値を乗算し、結果をセル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: 新しいシートを追加する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です