【Excel VBA】ブックがアクティブになった時に処理を実行する(Activate/Deactivate)

はじめに

今回は、ブック(Excel)がアクティブになった時に処理を自動で処理を実行する方法をご紹介します。
それに加えて、アクティブ状態が解除された時に処理を実行する方法も併せて解説します。

この記事を読むメリット
  • ブック(Excel)がアクティブになった時に処理を自動で実行する方法が分かります。
  • ブック(Excel)がアクティブ状態から解除された時に処理を自動で実行する方法が分かります。
  • イベントを使用するための手順を画像付きで解説します。
  • コピペで使える実践的なサンプルコードを掲載しています。

基本情報

Activateイベント

ブックがアクティブになった時に処理を実行するには、Workbook_Activateイベント(以下「Activateイベント」という)を使用します。
Activateイベントは、ThisWorkbookモジュールに記載します。

構文

Activateイベントの構文を以下に示します。

構文

Private Sub Workbook_Activate()
…(ソースコードを入力)
End Sub

Deactivateイベント

ブックのアクティブ状態が解除された時に処理を実行するには、Workbook_Deactivateイベント(以下「Deactivateイベント」という)を使用します。
Deactivateイベントは、ThisWorkbookモジュールに記載します。

構文

Deactivateイベントの構文を以下に示します。

構文

Private Sub Workbook_Deactivate()
…(ソースコードを入力)
End Sub

イベントの記述手順

STEP
Workbookイベントを選択する

VBEより、「ThisWorkbook」>「Workbook」を選択する。

Workbookイベントの選択
STEP
イベントを選択する

プルダウンより「Activate」及び「Deactivate」を選択します。
その後、コード欄に「Workbook_Activate」及び「Workbook_Deactivate」イベントが記載されることを確認します。

イベントの選択
イベントの選択

サンプルコード

ブックがアクティブになった場合にメッセージボックスを表示する

サンプルコード
Private Sub Workbook_Activate()

    MsgBox ThisWorkbook.Name & "がアクティブになりました。"
End Sub

ブックのアクティブ状態が解除された場合にブックを上書き保存する

サンプルコード
Private Sub Workbook_Deactivate()

    ' ブックが保存されているかを確認する
    If ThisWorkbook.Path <> "" Then

        ' ブックを上書き保存する
        ThisWorkbook.Save
    End If
End Sub

最後に

今回は、ブックがアクティブになった時に処理を実行する方法に加えて、アクティブ状態が解除された時に処理を実行する方法をご紹介させて頂きました。

本記事が、皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA