我在特定单元格上使用Worksheet_Change来清除ClearContents。评估变化的单元格是“A10”。该值来自数据验证列表。我注意到当这个单元格中有一个值并且我单击下拉列表时,即使我从该列表中重新选择相同的值,清除内容也会执行。有办法避免这种情况吗?我担心这个工作表的用户想要查看下拉列表中的选项,但最终会保留原来的A10值并仍然丢失其他单元格的内容。
以下是代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rang As Range
Set rang = Worksheets("Sheet1").Range("A10")
If Not Intersect(Target, rang) Is Nothing Then
Worksheets("Sheet1").Range("B10:B50000", "C10:C50000").ClearContents
End If
End Sub
提前致谢!
答案 0 :(得分:0)
以下是宏的一个版本,用于跟踪 A10
中的旧值如果没有进行真实更改,它就会消失:
Dim OldValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rang As Range
Set rang = Worksheets("Sheet1").Range("A10")
If IsEmpty(OldValue) Then
OldValue = rang.Value
Exit Sub
End If
If Not Intersect(Target, rang) Is Nothing Then
If OldValue = rang.Value Then
Exit Sub
End If
OldValue = rang.Value
Application.EnableEvents = False
Worksheets("Sheet1").Range("B10:B50000", "C10:C50000").ClearContents
Application.EnableEvents = True
End If
End Sub
由于OldValue是DIM< strong> ,因此其值不会因呼叫而被保留。