Workbook クラスのイベント
よく使用するイベントは、以下です。
イベント | 説明 |
Open | ブックを開いたとき |
BeforeClose(Cancel as Boolean) | ブックを閉じる前 |
SheetChange(Sh as Object, Target as Range) | シートのセルが変更されたとき |
イベントの引数は、以下です。
引数 | 説明 |
Sh | イベントの対象の Worksheet オブジェクトまたは Chart オブジェクト |
Target | イベントの対象の Range オブジェクト |
Cancel | イベント操作の中止するかどうかを表すプール値 |
ブックを開いたときに実行するイベントハンドラーを追加する
Excel VBAのイベントハンドラーを使用するには、ThisWorkbookモジュールにコードを追加します。
以下の手順でイベントハンドラーを設定します
- Excelで対象のブックを開きます。
- Alt + F11キーを押してVBAエディタを開きます。
- プロジェクトエクスプローラーで「ThisWorkbook」をダブルクリックします。
- コードウィンドウに以下のコードを追加します。
ブックを開いたとき
' ブックを開いたときに実行されるコード
Private Sub Workbook_Open()
MsgBox "こんにちは、世界!"
End Sub
このコードをThisWorkbookモジュールに追加すると、ブックを開いたときに「こんにちは、世界!」というメッセージボックスが表示されます。
ブックを閉じる前
' ブックを閉じる前に実行
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheet1.Range("A3").Value = "" Then
MsgBox "ブックを閉じる前に A3 セルに入力してください"
Cancel = True
End If
End Sub
ユーザーがブックを閉じようとすると、Workbook_BeforeClose
イベントがトリガーされます。Sheet1
の A3
セルが空白かどうかを確認します。A3
セルが空白の場合、メッセージボックスで「ブックを閉じる前に A3 セルに入力してください」とユーザーに通知します。Cancel
を True
に設定することで、ブックの閉鎖をキャンセルします。
シートのセルが変更されたとき
' シートのセルが変更されたとき
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "セルが変更されました: " & Target.Address & " in sheet " & Sh.Name
End Sub
任意のシートでセルの値が変更されると、Workbook_SheetChange
イベントハンドラーが呼び出されます。
変更されたセルのアドレス(Target.Address
)とシートの名前(Sh.Name
)を取得します。
メッセージボックスに「セルが変更されました: [セルのアドレス] in sheet [シートの名前]」というメッセージを表示します。
この記事は、以下を参照しています。
Workbookのイベントプロシージャー
https://excel-ubara.com/excelvba1/EXCELVBA424.html