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

时间:2012-12-28 18:51:26

标签: excel vba

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

我有以下代码,一切正常但是如果我通过点击“删除”键清除单元格E12的内容,单元格c39不会改变 但是,如果我使用退格+输入清除单元格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

1 个答案:

答案 0 :(得分:0)

如果按下Delete时选择中包含E12,则此功能将起作用。这是必要的,因为当您点击Delete键时,Target.Address被评估为Range("E12:F12"),但是当您在E12中输入值时,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个事件。