ワークシートがアクティブになった時にマクロを自動実行します。

アクティブとは他のシートから該当のシートが前面に移った場合のことをいいます。

構文は、Worksheet.OnSheetActivateプロパティを使います。


シートがアクティブになった時にマクロを自動実行する

VBA入力画面
VBE画面

入力したコードです。

Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)

Sub シートがアクティブになった時に自動実行マクロ()
    Worksheets("Sheet2").OnSheetActivate = "自動実行マクロ"
End Sub

Sub 自動実行マクロ()
    Range("B4") = ""
    Range("B3") = "2秒後にメッセージを表示します。"
    Sleep (2000)
    Range("B3") = ""
    Range("B4") = "自動実行マクロで入力しました。"
End Sub

プログラムの説明


Windows APIの宣言
Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)
Subプロシージャの宣言
Sub シートがアクティブになった時に自動実行マクロ()
OnSheetActivateubプロパティの設定
Worksheets("Sheet2").OnSheetActivate = "自動実行マクロ"
プロシージャの終了
End Sub
Subプロシージャの宣言
Sub 自動実行マクロ()
B4セルをクリア
Range("B4") = ""
B3セルに入力
Range("B3") = "2秒後にメッセージを表示します。"
2秒待ち
Sleep (2000)
B3セルをクリア
Range("B3") = ""
B4セルに入力
Range("B4") = "自動実行マクロで入力しました。"
プロシージャの終了
End Sub

シートがアクティブになった時に自動実行マクロの実行画面

ワークブックのシートがアクティブになった時に自動実行マクロを実行します。
マクロを実行する

Sheet1からSheet2に移すと、B3セルに「2秒後にメッセージを表示します。」と表示されます。
シート2がアクティブになった時

2秒経過すると、B4セルに「自動実行マクロで入力しました。」と表示されます。
2秒経過後のシート

Excelマクロのサンプルファイル:フリーダウンロード








Copyright (C) excel.usefulhp.com All rights reserved.