当另一张表上的另一个单元格的值发生变化时清除单元格内容

当另一张表上的另一个单元格的值发生变化时清除单元格内容

我想通过更改 Sheet2 上 F4 的值来清除 Sheet1 (A1) 上组合框选择的结果(此更改由 Sheet 1 中的另一个组合框进行)。我在 Sheet1 上使用以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("sheet2!F4")) Is Nothing Then

Range("A1").ClearContents

End If

End Sub

问题是,如果更改的单元格 (F4) 为空,则输入或更改任何值都可以(清除 Sheet1 上的 A1),但如果更改来自另一个单元格(例如,如果在 F4 中键入 =D4),则目标单元格 (A1) 将不会通过更改值来清除。请帮忙...

答案1

这就是你要找的东西吗?

将下面的代码粘贴到 Sheet2 中,因为更改发生在那里。

Private Sub Worksheet_Calculate()
    'On Cell Calculate
    Dim target1 As Range
    Set target1 = Range("F4")

    If Not Intersect(target1, target1) Is Nothing Then
        Call ClearBox
    End If

End Sub

Private Sub Worksheet_Change(ByVal target As Range)
    'On Cell Change
    If target.Address = "$F$4" Then
        Call ClearBox
    End If

End Sub

Private Sub ClearBox()
    'Clear Combo box
    Sheets("Sheet1").Range("A1").ClearContents
End Sub

答案2

这是设计使然。change 事件仅在单元格被编辑时触发,而不是在公式重新计算且单元格值发生变化时触发。如果 F4 中有一个公式,则需要监视该公式的单元格。在这种情况下,如果 F4 包含公式=D4,则需要监视 D4 以了解 change 事件中的更改。

相关内容