vba - 确定单元格是否包含数据验证

标签 vba excel excel-2010

我正在编写一个 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

有什么想法吗? 谢谢

最佳答案

我知道这个问题已经很老了,但由于它是在谷歌搜索“excel vba 检查单元格是否具有验证”时出现的,所以我想我应该持保留态度。

如果您调用 SpecialCellsRange 对象仅代表单个单元格,则将扫描整个工作表以查找匹配项。如果您的数据量非常大,之前答案中提供的方法可能会变得有点慢。

因此,这是一种更有效的方法来检查单个单元格是否具有验证:

Function HasValidation(cell As Range) As Boolean
    Dim t: t = Null

    On Error Resume Next
    t = cell.Validation.Type
    On Error GoTo 0

    HasValidation = Not IsNull(t)
End Function

关于vba - 确定单元格是否包含数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642930/

相关文章:

excel - Excel内存不足错误

VBA - 将行打印到 .txt 文件

excel VBA如何从工作表名称确定工作表索引

java - 从另一个包含太多工作表的 Excel 创建一个新的单工作表 Excel 文件

performance - 在excel vba中格式化需要很长时间

vba - Excel VBA 通配符搜索

excel - 自动填充使用一半的核心

vba - 使用 vba 在公式前面插入撇号

vba - 如何在 Excel VBA 中自动按下消息框的确定按钮?

python - 使用 xlsxwriter 居中对齐(无条件格式)