教えて!ExcelVBA!

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

【ExcelVBA ブック操作】ブック内のシートが変更された時に発生するイベントプロシージャを作成するにはどうすればいいの?教えて!

構文

構文は以下の通りです。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ' 実行する処理を記述する部分
End Sub

解説

Workbook_SheetChangeイベントプロシージャは、Excelブック内のシート上でセルの内容が変更されたときに実行されます。引数は以下の内容となります。

引数 内容
sh 変更が行われたシートを表します。
Target 変更が行われたセルや範囲を表します。

プログラミング例

以下に、Workbook_SheetChangeイベントプロシージャの使用例を示します。この例では、特定のシートでセルが変更された場合に、変更されたセルの内容をメッセージボックスで表示します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ' 変更が行われたシートを判定
    If Sh.Name = "Sheet1" Then
        ' 変更が行われたセルの内容を取得してメッセージボックスで表示
        MsgBox "変更されたセルの内容: " & Target.Value
    End If
End Sub

上記の例では、変更が行われたシートが「Sheet1」である場合にのみ、変更されたセルの内容を取得し、メッセージボックスで表示しています。

まとめ

Workbook_SheetChangeイベントプロシージャは、ブックのシート上でセルの内容が変更されたときに自動的に実行されるイベントです。このイベントプロシージャを活用することで、ユーザーの操作に応じて特定の処理を実行することができます。