当excel中的“del”键命中时,单元格值不会更新

单元格E12与单元格F12合并:

我有下面的代码,一切工作正常,但是如果我通过点击“删除”键清除单元格E12的内容,单元格c39不会更改,但如果我通过使用退格+input清除单元格e12的内容,单元格c39更新…

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$12" Then Range("d28").Value = Range("e12").Value If Range("e12") = "" Then ' update cell c39 with calculator Range("c39") = "Do you ?" Else Range("c39") = "Do you " & Range("e13").Text & "?" End If End If End Sub 

如果在按下Deletebutton时包含在E12中,则这将起作用。 这是必要的,因为当您按下Delete键时,Target.Address被评估为Range("E12:F12") ,但是当您在E12input一个值时,Target.Address就是Range("E12)

 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Reset_EnableEvents Application.EnableEvents = False If Not Intersect(Target, Range("$E$12")) Is Nothing Then Range("d28").Value = Range("e12").Value If Range("e12") = "" Then ' update cell c39 with calculator Range("c39") = "Do you ?" Else Range("c39") = "Do you " & Range("e13").Text & "?" End If End If Reset_EnableEvents: Application.EnableEvents = True End Sub 

如果所有列E被选中,单元格A1和E12等等,这也将被触发。这就是Intersect操作所做的事情,我猜这就是你想要的。

请注意,我还添加了代码,以便在运行代码的核心之前和之后EnableEvents 。 这使您的代码不会触发其他Worksheet_Change事件。