【VBA】エクセルのテーブルの特定の列が変更された際に処理を行う

前提

ここでは以下のテーブルの列が変更された際に処理を行います。

シート名 :サンプル
テーブル名:tblSample
列名   :section

サンプルプログラム

セルが変更された際に実行されるイベント「Workbook_SheetChange」を利用します。

'変数の宣言を必須
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Dim tbl As ListObject
    Dim targetColumnAdress As String

    '各種機能を無効化
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
    
    'テーブルを取得
    Set tbl = Sheets("サンプル").ListObjects("tblSample")
    
    '列「section」の範囲のアドレス
    targetColumnAdress = tbl.ListColumns("section").DataBodyRange.Address
    
    '変更されたセルが列「section」の範囲の場合のみ処理継続
    If Not Intersect(Target, Range(targetColumnAdress)) Is Nothing Then

        '''''''''''''''''''''''''''''''''''
        '変更時に行いたい処理を記載する
        '''''''''''''''''''''''''''''''''''
        MsgBox "セル『" & Target.Address & "』の値が変更されました"
        
    End If
    
    '各種機能を有効化
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic

End Sub

結果

タイトルとURLをコピーしました