Worksheet_Change数据验证值

时间:2014-04-03 21:14:34

标签: excel-vba validation vba excel

我在特定单元格上使用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

提前致谢!

1 个答案:

答案 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> ,因此其值不会因呼叫而被保留。