ワークシートが非アクティブになった時にマクロを自動実行します。
非アクティブとは現在のシートから他のシートに移った場合のことをいいます。
構文は、Worksheet.OnSheetDeactivateプロパティを使います。
シートが非アクティブになった時にマクロを自動実行する
VBA入力画面
入力したコードです。
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") = "自動実行マクロで入力しました。"
Worksheets("Sheet2").OnSheetDeactivate = "非アクティブ時自動実行マクロ"
End Sub
Sub 非アクティブ時自動実行マクロ()
MsgBox "Sheet2が非アクティブになりました。"
End Sub
プログラムの説明
Windows APIの宣言 (
Windows API Sleepを参照)
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秒待ち (
Windows API Sleepを参照)
Sleep (2000)
B3セルをクリア
Range("B3") = ""
B4セルに入力
Range("B4") = "自動実行マクロで入力しました。"
OnSheetDeactivateプロパティの設定
Worksheets("Sheet2").OnSheetDeactivate = "非アクティブ時自動実行マクロ"
プロシージャの終了
End Sub
Subプロシージャの宣言
Sub 非アクティブ時自動実行マクロ()
メッセージの表示 (
MsgBox関数を参照)
MsgBox "Sheet2が非アクティブになりました。"
プロシージャの終了
End Sub
シートが非アクティブになった時に自動実行マクロの実行画面
ワークブックのシートがアクティブになった時に自動実行マクロを実行します。
Sheet1からSheet2に移すと、B3セルに「2秒後にメッセージを表示します。」と表示されます。
2秒経過すると、B4セルに「自動実行マクロで入力しました。」と表示されます。
Sheet1に移すと、「Sheet2が非アクティブになりました。」とメッセージが表示されます。
Excelマクロのサンプルファイル:
フリーダウンロード
Copyright (C) excel.usefulhp.com All rights reserved.