ブック内のシートが変更された時に発生するイベントプロシージャの使用方法について説明します。
【目次】
構文
イベントプロシージャの記述方法は以下の通りです。
=======================================================================
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
[実行する処理内容]
End Sub
=======================================================================
[説明]:
ブック内のシートが変更された時に発生するイベントプロシージャにはSheetChangeプロシージャを使用します。[実行する処理内容]にはブック内のシートが変更された際に実行させる内容を記述します。内容を纏めると、「ブック内のシートが変更された時に[実行する処理組内容]を実行して下さい。」との意味になります。
[記述例]:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "内容が変更されました。"
End Sub
作り方
(1)VBE(VBA記述画面)を開きます。
※画面の開き方は、こちらの手順を参考にして下さい。
【ExcelVBA 基本操作】マクロ/VBAを書く(記述する)ためにはどうすればいいの?教えて! - 教えて!ExcelVBA!
(2)ブックオブジェクトをダブルクリックします。
(3)オブジェクトボックスの▼ボタンをクリックします。
(4)プルダウン一覧の中から「WorkBook」を選択します。
※この時点で「Workbook_Open」イベントプロシージャが表示されます。(これは自動的に作成される仕組みとなっているようです)
(5)プロシージャボックスの▼ボタンをクリックします。
(6)プルダウン一覧の中から「SheetChange」を選択します。
(7)「Workbook_SheetChange」イベントプロシージャが表示されます。
(8)(7)で作成したイベントプロシージャに実行させる内容を記述します。今回は実行された際に「内容が変更されました。」がMsgBoxで表示される内容を記述しました。
ブック内のシートが変更された時に発生するイベントプロシージャの作成方法についての説明は以上です。
実行例
今回の例としては、Book1ブックには上記で説明したイベントプロシージャが記述されています。
(実行前)
※Book1ブックのA1セルに数値:1がセットされています。
(実行後)
※A1セルの数値を1→2へ変更すると同時に「内容が変更されました。」が表示されます。(Book1ブック内のシートがされた事で、プロシージャが実行されてメッセージが表示されました)
おわりに
今回はブック内のシートが変更された時に発生するイベントプロシージャの作成方法について説明しました。オブジェクトボックスでオブジェクトを選択すると、そのオブジェクト既定の「Workbook_Open」イントプロシージャが自動的に作成されます。不要な場合は削除して下さい。