Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 工作表\u数据验证值的更改_Excel_Validation_Vba - Fatal编程技术网

Excel 工作表\u数据验证值的更改

Excel 工作表\u数据验证值的更改,excel,validation,vba,Excel,Validation,Vba,我正在使用工作表更改以清除特定单元格上的内容。正在评估更改的单元格为“A10”。此值来自数据验证列表。我注意到,当这个单元格中有一个值时,我单击下拉列表,即使我从这个列表中重新选择了相同的值,也会执行清除内容。有没有办法避免这种情况?我担心这张表的用户会想查看下拉列表中的选项,但最终会保留原来的A10值,并且仍然会丢失其他单元格的内容 代码如下: Private Sub Worksheet_Change(ByVal Target As Range) Dim rang As Range Se

我正在使用工作表更改以清除特定单元格上的内容。正在评估更改的单元格为“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

提前谢谢

这里是宏的一个版本,它跟踪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在sub上方被设置为DIM'strong>,所以它的值在调用之间被保留