1

单元格 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
4

1 回答 1

0

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

于 2012-12-28T19:23:01.567 回答