我有几个案例会引发变革。 他们按我的意愿工作。如果D21为空白则没有任何反应。如果有任何内容,则会出现一个消息框。等等。
问题是我还有一个清晰的单元格按钮,当我不希望消息框出现时,它会在D21上触发更改事件。只需清除所有细胞。 以下是我写的案例。
Private Sub Worksheet_Change(ByVal Target As range)
Application.EnableEvents = False '<--| disable events handling
On Error GoTo ErrorHandler '<--| be sure to catch any error and enable events handling back
Select Case Target.Address
Case "$D$4"
Me.Unprotect
'Recalculate Downpayment D5 if Purchase Price is changed
range("D5").Value = (range("D4").Value * range("B5").Value) / 100
Debug.Print "New value for D5 Downpayment "; range("D5").Value
range("D6").Value = (range("D4").Value - range("D5").Value) ' This cell won't activate when locked and sheet protected
Debug.Print "D6 New Mortgage " & range("D6").Value
Me.Protect
If range("D21") <> 0 Then
MsgBox "The Total Mortgaged Amount has changed, The Mortgage Payment Amount (Cell D21) is no longer valid. Please Re-calculate Mortgage with New Amount"
End If
以下是我编写清晰按钮的方法
Sub ClearTEst()
Dim ws As Worksheet
Dim rRng As range
Dim rCell As range
Dim rRows As range
Set rRng = Sheet1.range("A1:D28")
For Each rCell In rRng.Cells
If rCell.Locked = False Then
If rCell <> range("E21") Then
range("B10") = 5
range("B14") = 0.4
range("B15") = 8
range("B16") = 0.4
range("B17") = 5
range("B18") = 5
' rCell.ClearContents
rCell = 0
End If
End If
Next rCell
End Sub
是否有任何方法可以捕获工作表更改是由清除按钮触发的,而不是触发调用该消息的案例。首先,我想如果我可以在清除按钮触发的If范围(&#34; D21&#34;)中添加一个条件,那么就没有消息,如果没有则消息。
希望这是有道理的。感谢
答案 0 :(得分:1)
为了禁止您的代码触发事件,您需要在代码的其余部分之前添加以下代码:
Application.EnableEvents = False
' //////////////////////////////
' /// REST OF YOUR CODE HERE ///
' //////////////////////////////
Application.EnableEvents = True
End Sub