[英]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.