1

セルE12はセルF12とマージされます。

「削除」キーを押してセルE12の内容をクリアしても、セルc39は変更されません。

backspace + enterを使用してセル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がと評価されますが、Target.AddressRange("E12:F12")に値を入力するE12とは。だけになるため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 に答える