教えて!ExcelVBA!

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

【ExcelVBA ブック操作】ブックが非アクティブになった時に発生するイベントプロシージャを作成するにはどうすればいいの?教えて!

構文

構文は以下の通りです。

Private Sub Workbook_Deactivate()
    ' ここに実行したいコードを記述する
End Sub

解説

Workbook_Deactivateイベントプロシージャは、ブックが非アクティブ化されたときに実行されます。例えば、ブックが非アクティブになったら自動的に保存する、特定のセルの値をクリアする、またはメッセージボックスを表示するなどの動作を設定することができます。

プログラミング例

以下に、Workbook_Deactivateイベントプロシージャのプログラミング例を示します。

例1: 非アクティブになったときにメッセージボックスを表示する

Private Sub Workbook_Deactivate()
    MsgBox "このブックは非アクティブになりました。"
End Sub

例2: 非アクティブになったときに自動的に保存する

Private Sub Workbook_Deactivate()
    ThisWorkbook.Save
End Sub

例3: 非アクティブになったときに特定のセルの値をクリアする

Private Sub Workbook_Deactivate()
    ThisWorkbook.Sheets("Sheet1").Range("A1").ClearContents
End Sub

上記の例では、例1では非アクティブになったときにメッセージボックスが表示されます。例2では自動的にブックが保存されます。例3では非アクティブになったときにSheet1のA1セルの値がクリアされます。

まとめ

Workbook_Deactivateイベントプロシージャは、Excelのブックが非アクティブになったときに発生するイベントです。このイベントを利用することで、ブックが非アクティブになったときに特定の処理を実行することができます。使い方は、VBAエディタで対象のブックのモジュールにWorkbook_Deactivateイベントプロシージャを追加し、その中に実行したい処理を記述します。