我想通过更改 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 事件中的更改。