冷ややかな瞳
部屋の隅にちょこんと座っていた岬さんは、一連のやり取りを冷ややかな瞳で見つめいていました。
「(…ちょっと、ちょっと。何なのよこの人。
後から入ってきたわりには、ズーズーしいんじゃないの…??)」
彼女は心もち、ふくれっ面です。
泉先輩はスタンダードのテキストをパラパラとめくり、あるページを指さしました。
「ここなんか読んでても、さっぱりわからなかったんですけど…」
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Target.Value + 1
End Sub
Excelの画面に戻って、任意のセルに「1」と入力します。
すると「1」が入力されたというイベントが発生して「Worksheet_Change」が起動されます。
「Worksheet_Change」では、「編集されたセルの値を+1する」という命令が記述されていますので、
セルの値は「2」になります。
「Worksheet_Change」によってセルの値が変更されましたので、Excelは再度
「セルの値が変更された」というイベントを発生させます。
こうしたイベントの連鎖を防ぐには、Excelのイベント発生を抑止するプロパティを設定します。
ApplicationオブジェクトのEnableEventsプロパティにFalseを設定すると、それ以降、
Excelのイベントは発生しなくなります。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Value = Target.Value + 1
Application.EnableEvents = True
End Sub
EnableEventsプロパティがFalseのままだと、Excel上で一切のイベントが抑止されますので、
プロシージャの最後でTrueに戻すのを忘れないでください。
< スタンダード公式テキスト P65~66 >