Excel VBAで特定のセル値変更時に処理を実行する方法

2020/09/30
カテゴリー: その他


準備

まず実行するプログラムを簡単に作ります。
今回は単純に実行したらメッセージボックスを表示するプログラムです。


一応コードはこちら
Sub msg()
MsgBox "実行"
End Sub

特定のセルの値が変わった時に実行する処理

まず、Sheet1のコードを開きます。


上のプルダウンからWorksheetとChangeを選択して関数をセットします。
Worksheetを選択した時点でSelectionChangeの関数が出てきますが、使わないので消します。


特定のセルの値が変わったら、はじめに作ったmsbを実行するというIF文を書きます。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("a1").Address Then
    Call msg
End If
End Sub

試してみると


しっかりと値が変わった時に実行されました。

おまけ:処理が終わったら元のセルを選択した条件に戻る処理

処理が終わったら元のセルを選択した条件に戻る処理はたった1行追加するだけでいいので簡単です。
Range("a1").Selectこの一文を追加します
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("a1").Address Then
    Call msg
    Range("a1").Select 'ここを追加
End If
End Sub

試してみると


うまく戻ってくれました。
バーコードリーダーによって入力して処理を実行したい時などに使えそうですね。