我正在编写一个VBA代码,该代码通过一系列单元格检查每个单元格是否有数据验证(下拉菜单),如果没有从另一个工作表的列表中为其分配一个单元格 .
我目前在检查当前单元格是否已经有数据验证的行上有问题 . 我收到错误1004“没有找到细胞” .
Sub datavalidation()
Dim nlp As Range
Dim lrds As Long
Dim wp As Double
Dim ddrange As Range
Sheets("DataSheet").Select
lrds = ActiveSheet.Range("A1").Offset(ActiveSheet.rows.Count - 1, 0).End(xlUp).Row
Set nlp = Range("I3:I" & lrds)
For Each cell In nlp
'error on following line
If cell.SpecialCells(xlCellTypeSameValidation).Cells.Count < 1 Then
wp = cell.Offset(0, -8).Value
Set ddrange = ddrangefunc(wp)
End If
Next
End Sub
有任何想法吗?谢谢
6 回答
我知道这个问题已经过时了,但是当谷歌搜索“excel vba检查细胞是否有验证”时,我认为我会添加我的盐 .
如果您调用
SpecialCells
的Range
对象仅表示单个单元格,则将扫描整个工作表以查找匹配项 . 如果您有大量数据,则先前答案中提供的方法可能会变得有点慢 .因此,这是检查单个单元格是否具有验证的更有效方法:
如果您只想测试activecell,那么:
此外,如果您想获得验证
Source
,您可以使用以下...这对我有用
大约4年后,我也在寻找细胞验证 . 结合这里的一些答案,这就是我提出的: