Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer
iRow = Target.Row
Application.EnableEvents = False
Cells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)
Application.EnableEvents = True
End Sub
這個程式的目的是要在 B2 輸入新的數時,C2 會將 B2 輸入的新數加上 C2 原有的數呈現在 C2 上。
照上面有加上 Application.EnableEvents = False 程式執行當然沒問題。
現在你在 Application.EnableEvents = False 與 Application.EnableEvents = True 前加上「 '」看看(下面代碼)。
程式前加上「 '」的目的是要使「 '」之後的文字變成解說文字,程式執行時是會跳過解說文字,不執行解說文字的內容。
程式前加上「 '」符號後,文字會變成綠色。
執行第二個程式時,你將發現 C2 不會按你所要求的,呈現結果。
這就是所謂的事件連鎖反應。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer
iRow = Target.Row
'Application.EnableEvents = False
Cells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)
'Application.EnableEvents = True
End Sub
再如:
本樣本在儲存檔案之前禁用事件,以使 BeforeSave 事件不能觸發。
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True