繁体   English   中英

查找无效的数据验证单元

[英]Find invalid data validation cells

描述:

我创建了一个自定义的下拉数据验证列表,可以在其中选择几个值。 下拉列表中的这些值根据需要进行更改(在工作表X列中定义)。

问题:

当我从下拉列表中选择一个值(例如Y),然后通过删除最后一个插入的值(从X列中删除Y值)来更新数据验证时,就会出现我的问题。 通过这样做,工作表中存在的值Y不再有效,因此我想知道是否存在一种方法来获取包含无效数据的单元格列表(数组或字符串)。

到目前为止我已经做过/想过的事情:

我已经在几个站点中搜索并阅读了类似的问题,但是找不到任何有用的东西。 我考虑过循环所有单元格并检查该值是否有效,但是由于我拥有大量数据,因此我认为这不是最佳方法。

由于Excel已经用红色圆圈标记了这些无效的数据,也许可以获取那些标记单元格的地址吗? 提前致谢!

获取工作表中无效单元格的正确方法是使用Cells.SpecialCells(xlCellTypeAllValidation)

通过使用Microsoft KB213773(Q213773)-“如何创建用于在Excel中打印的数据验证圆”中存在的某些信息,可以使用类似的Sub循环所有无效单元格,然后更改其值(或将它们标记为以后的编辑)。

Sub CorrectInvalidValues()

    Dim data_range As Range
    Dim invalid_cell As Range
    Dim count As Integer: count = 0
    Dim nr_invalid As Integer: nr_invalid = 0
    Dim new_value As String

    'If an error occurs run the error handler and end the procedure
    On Error GoTo errhandler
    Set data_range = Cells.SpecialCells(xlCellTypeAllValidation)
    On Error GoTo 0

    ' Loop through each cell that has data validation and gets the number of invalid cells
    For Each invalid_cell In data_range
        If Not invalid_cell.Validation.Value Then
            nr_invalid = nr_invalid + 1
        End If
    Next

    ' Editing each value
    For Each invalid_cell In data_range
        If Not invalid_cell.Validation.Value Then
            count = count + 1
            Application.Goto reference:=invalid_cell, Scroll:=True
            new_value = Application.InputBox("Please insert a correct value.", "Invalid Data " & count & "/" & nr_invalid)

            If Not (new_value = "False") Then
                invalid_cell.Interior.ColorIndex = 0
                invalid_cell.Value = new_value
            Else
                invalid_cell.Interior.Color = RGB(255, 0, 0)
                invalid_cell.Value = "<PLEASE EDIT>"
            End If
        End If
    Next

    Exit Sub

errhandler:
    MsgBox "There are no cells with data validation on this sheet."

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM