教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでブック内シートが変更された時に処理を実行する方法

構文

構文は以下の通りです。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ' コードをここに記述
End Sub

解説

Workbook_SheetChangeは、シートで何かが変更されたときに実行されるイベントです。Shは、どのシートで変更が行われたかを表します。Targetは、どのセルが変更されたかを示す範囲(Range)です。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    MsgBox "シート「" & Sh.Name & "」のセル " & Target.Address & " が変更されました"
End Sub

上記のプログラムは、シートのどこかのセルが変更されたときに、そのシートの名前と変更されたセルのアドレス(位置)をメッセージボックスで表示します。

まとめ

Workbook_SheetChangeイベントは、シートが変更されたときに自動で実行されます。変更が行われたシート名とセルの位置を取得し、ユーザーに知らせることができます。簡単なメッセージボックスを使うことで、何が起こったかを簡単に確認することができます。