Deactiveでは、ブックやシートを離れた時に処理を実行させることができます。
ただしブックの場合「他のExcelに移動した時」のみ、シートでは「同じブック内の他のシートに移動した時」のみ挙動するようです。
イベントプロシージャの作成
イベントプロシージャを用意するためには、ブックないしはシートモジュールを選択する必要があります。

ブックでは、Workbookを選んでからDeactivateを選択します。

プロシージャが作成されるので、この中に処理を記述します。

シートの場合も同様。
Worksheetを選んでからDeactivateを選択します。
Worksheetを選んでからDeactivateを選択します。
Deactiveの使い方
' vba
Private Sub Workbook_Deactivate()
MsgBox "非アクティブになりました"
End Sub
まず、ブックを離れた時に処理を起動してみます。

残念ながら、最小化やブラウザの選択では処理は起動しません。

他のExcelブックに移動すると、処理が起動することが確認できました。
なお、すでに他のブックに移動しているからか、セルの内容の変更などの処理は走りませんでした。
なお、すでに他のブックに移動しているからか、セルの内容の変更などの処理は走りませんでした。
' vba
Private Sub Worksheet_Deactivate()
MsgBox "非アクティブになりました"
Range("A1").Value = "aaa"
End Sub
シートのほうでも試してみます。

他のシートに移動すると処理が走り、

元のシートのセルの値を変更することもできました。Deactiveはシートのほうが使い道がありそうな印象です。

やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント