HOME > 中級編 > セルの内容が変更された時に処理を実行

セルの内容が変更された時に処理を実行

セルの内容が変更された時に処理を実行するには、
Worksheetモジュールに「Private Sub Worksheet_Change(ByVal Target As Range)」というイベントプロシージャーを作成します。
イベントの作成方法に関しては「イベントプロシージャーの作成」を参考にしてください。

●構文
Private Sub Worksheet_Change(ByVal Target As Range)
処理
End Sub

セルの内容が変更された時に処理を実行

●使用例
Private Sub Worksheet_Change(ByVal Target As Range)
'絶対参照記号あり
MsgBox Target.Address & "が変更されました。"
'絶対参照記号なし
MsgBox Target.Address(False,False) & "が変更されました。"
End Sub

●実行結果(セルA1を変更)
◇絶対参照記号あり
セルの内容が変更された時に処理を実行
◇絶対参照記号なし
セルの内容が変更された時に処理を実行
引数を指定しないで変更されたセルのアドレスを取得すると、絶対参照記号($)がついてしまい、後の処理に使用する場合に非常に扱いづらいです。
しかし、「Target.Address(False,False)」と引数を指定してあげると、絶対参照記号がない状態で変更されたセルのアドレスを取得することができます。

説明が遅れましたが、「Target」というのはイベントプロシージャーが引数として指定しているRangeオブジェクトのことです。
つまり「Address」というのはRangeオブジェクトのプロパティとなります。

このイベントプロシージャーを使うにはRangeオブジェクトも使いこなさなければいけません。
Rangeオブジェクトを使いこなせれば、
・変更されたセルの値を取得する(Value)
・変更されたセルのコメントを取得する(Comment)
・変更されたセルの列を取得する(Column)
・変更されたセルの行を取得する(Row)
など処理の幅を広げることができますので、いろいろ試してみてください!




ブックを開いた時に処理を実行 ブックを保存する前に処理を実行





inserted by FC2 system