Excel VBA(マクロ)でブック/シートを非アクティブにした時にイベントプロシージャを実行する方法/Deactiveの使い方

birds IT

Deactiveでは、ブックやシートを離れた時に処理を実行させることができます。
ただしブックの場合「他のExcelに移動した時」のみ、シートでは「同じブック内の他のシートに移動した時」のみ挙動するようです。

スポンサーリンク

イベントプロシージャの作成

deactive1
ブックでは、Workbookを選んでからBeforeSaveを選択します。
deactive2
プロシージャが作成されるので、この中に処理を記述します。
deactive3
シートの場合も同様。
Worksheetを選んでからBeforeSaveを選択します。

Deactiveの使い方

' vba
Private Sub Workbook_Deactivate()
MsgBox "非アクティブになりました"
End Sub
まず、ブックを離れた時に処理を起動してみます。
deactive5
残念ながら、最小化やブラウザの選択では処理は起動しません。
deactive4
他のExcelブックに移動すると、処理が起動することが確認できました。
なお、すでに他のブックに移動しているからか、セルの内容の変更などの処理は走りませんでした。
' vba
Private Sub Worksheet_Deactivate()
MsgBox "非アクティブになりました"
Range("A1").Value = "aaa"
End Sub
シートのほうでも試してみます。
deactive6
他のシートに移動すると処理が走り、
deactive7
元のシートのセルの値を変更することもできました。Deactiveはシートのほうが使い道がありそうな印象です。
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント