次の2つの方法があります。
モジュール | プロシージャ | 機能説明 |
---|---|---|
ThisWorkbook | Workbook_Open | ワークブックを開くイベント |
標準モジュール | Auto_Open | 起動時自動実行 ※Application.EnableEvents=False状態でも実行される。 |
一般的なマクロは、ユーザーが「起動させる」との意図で動かしますが、イベント処理では次のようなオペレーション動作をWindowsが察知してExcelに通知してきます。このプロシージャ名と記述する場所はあらかじめ決められています。
代表的なものは以下の通りです。
モジュール | プロシージャ | 機能説明 |
---|---|---|
ThisWorkbook | Workbook_BeforeClose | ワークブックを閉じる前イベント(キャンセル可) |
Workbook_BeforeSave | ワークブックの保存前イベント(キャンセル可) | |
Workbook_BeforePrint | ワークブックの印刷前イベント(キャンセル可) | |
Workbook_Open | ワークブックを開くイベント | |
Workbook_SheetActivate | シートを切り替えるイベント(⇒アクティブ) | |
Workbook_SheetDeactivate | シートを切り替えるイベント(⇒非アクティブ) | |
Workbook_WindowActivate | ウィンドウを切り替えるイベント(⇒アクティブ) | |
Workbook_WindowDeactivate | ウィンドウを切り替えるイベント(⇒非アクティブ) | |
ワークシート | Worksheet_Activate | ワークシートがアクティブになるイベント |
Worksheet_BeforeDoubleClick | セルのダブルクリック前イベント(キャンセル可) | |
Worksheet_BeforeRightClick | セルの右クリック前イベント(キャンセル可) | |
Worksheet_Calculate | ワークシートの再計算イベント | |
Worksheet_Change | セル値変更イベント | |
Worksheet_Deactivate | ワークシートが非アクティブになるイベント | |
Worksheet_SelectionChange | 選択セル変更イベント ※シートを開いた時に選択されているセルについては発生しない |
'***************************************************************************************************
' Workbookイベントプロシージャサンプル Module1(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/07(1.00)新規作成
'16/11/19(1.10)*.xlsm化の変更
'20/02/16(1.20)コード整理、標準化準拠作業
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsModuleName As String = "(Module1)"
'***************************************************************************************************
' ■■■ 自動実行 ■■■
'***************************************************************************************************
'* 処理名 :Auto_Open
'* 機能 :ブック起動時自動実行
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Auto_Open()
'-----------------------------------------------------------------------------------------------
Debug.Print "Auto_Openマクロが起動されました。" & g_cnsModuleName
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
'***************************************************************************************************
' Workbookイベントプロシージャサンプル Sheet1(Class)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/07(1.00)新規作成
'16/11/19(1.10)*.xlsm化の変更
'20/02/16(1.20)コード整理、標準化準拠作業
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsModuleName As String = "(Sheet1)"
'***************************************************************************************************
' ■■■ ワークシートイベント ■■■
'***************************************************************************************************
'* 処理名 :Worksheet_Activate
'* 機能 :ワークシートがアクティブになるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Activate()
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_Activateイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Worksheet_BeforeDoubleClick
'* 機能 :セルのダブルクリック前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 対象セル範囲(Range)
'* Arg2 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_BeforeDoubleClickイベントが発生しました。:" & Target.Address & _
" " & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Worksheet_BeforeRightClick
'* 機能 :セルの右クリック前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 対象セル範囲(Range)
'* Arg2 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_BeforeRightClickイベントが発生しました。:" & Target.Address & _
" " & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Worksheet_Calculate
'* 機能 :ワークシート再計算イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Calculate()
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_Calculateイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Worksheet_Change
'* 機能 :シート上のセルの内容が変わるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 対象セル範囲(Range)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_Changeイベントが発生しました。:" & Target.Address & " " & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Worksheet_Deactivate
'* 機能 :ワークシートが非アクティブになるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Deactivate()
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_Deactivateイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Worksheet_SelectionChange
'* 機能 :シート上の選択セルが変わるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 対象セル範囲(Range)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'-----------------------------------------------------------------------------------------------
Debug.Print "Worksheet_SelectionChangeイベントが発生しました。:" & Target.Address & _
" " & g_cnsModuleName
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
'***************************************************************************************************
' Workbookイベントプロシージャサンプル ThisWorkbook(Class)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/07(1.00)新規作成
'16/11/19(1.10)*.xlsm化の変更
'20/02/16(1.20)コード整理、標準化準拠作業
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsModuleName As String = "(ThisWorkbook)"
'***************************************************************************************************
' ■■■ ワークブックイベント ■■■
'***************************************************************************************************
'* 処理名 :Workbook_BeforeClose
'* 機能 :ワークブックを閉じる前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_BeforeCloseイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_BeforePrint
'* 機能 :ワークブックの印刷前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_BeforePrintイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_BeforeSave
'* 機能 :ワークブックを保存する前のイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = SaveAsUI(Boolean)
'* Arg2 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_BeforeSaveイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_Open
'* 機能 :ワークブックを開く時のイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_Open()
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_Openイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_SheetActivate
'* 機能 :シートを切り替えるイベント(⇒アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Sheet(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_SheetActivateイベントが発生しました。" & Sh.Name & " " & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_SheetDeactivate
'* 機能 :シートを切り替えるイベント(⇒非アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Sheet(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_SheetDeactivateイベントが発生しました。" & Sh.Name & " " & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_WindowActivate
'* 機能 :ウィンドウを切り替えるイベント(⇒アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Window(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_WindowActivateイベントが発生しました。" & g_cnsModuleName
End Sub
'***************************************************************************************************
'* 処理名 :Workbook_WindowDeactivate
'* 機能 :ウィンドウを切り替えるイベント(⇒非アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Window(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
'-----------------------------------------------------------------------------------------------
Debug.Print "Workbook_WindowDeactivateイベントが発生しました。" & g_cnsModuleName
End Sub
'----------------------------------------<< End of Source >>----------------------------------------