教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでシートが非アクティブになった時に処理を実行する方法

構文

構文は以下の通りです。

Private Sub Worksheet_Deactivate()
    ' シートが非アクティブになったときに実行されるコードをここに書きます
End Sub

解説

Worksheet_Deactivateは、シートが非アクティブ(他のシートに切り替えたときなど)になったときに発生するイベントです。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub Worksheet_Deactivate()
    ' メッセージボックスで通知
    MsgBox "シートが非アクティブになりました", vbInformation, "通知"
    ' 非アクティブ時にセルA1の内容をクリアする
    Range("A1").ClearContents
End Sub

上記のプログラムは、シートが非アクティブになるとメッセージボックスが表示され、シートが非アクティブになったことを通知します。その後、セルA1の内容がクリアされます。これは、特定のシートが選択されている間に入力されたデータが、他のシートに切り替えたときにクリアされる一例です。

まとめ

Worksheet_Deactivateイベントを使用することで、シートが非アクティブになったときに自動的に処理を実行することができます。具体的な処理内容は、メッセージボックスで通知する、セルの内容をクリアするなど、必要に応じて自由にカスタマイズできます。