数据验证列表错误

nat*_*ork 0 validation excel vba excel-2010

我正在尝试添加数据验证下拉列表,但我已经对其进行了一段时间的调试,但无济于事。我收到运行时错误 1004、应用程序定义或对象定义错误。该错误发生在Validation.Add语句的公式 1 设置部分。

我尝试使用对命名范围的字符串引用、对标准范围的字符串引用,以及如下所示的从工作表上的列表生成的逗号分隔列表字符串,如下面的代码所示。我已经检查了列表字符串Debug.Print并得到了预期的结果。

Sub addPT_Validation()
Dim sValidationList As String
Dim cell As Range

For Each cell In ThisWorkbook.Names("PT_Puldown").RefersToRange
    sValidationList = sValidationList & cell.Value & ","
Next cell

sValidationList = Left(sValidationList, Len(sValidationList) - 1)

With ActiveSheet.Range("D14").Validation
    .Add Type:=xlValidateList, _
            AlertStyle:=xlValidAlertStop, _
            Operator:=xlEqual, _
            Formula1:=sValidationList
    .IgnoreBlank = True
    .InCellDropdown = True
    .ShowError = True
End With
End Sub
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的任何指导。

cyb*_*shu 5

您的所有代码都在工作(当然可以优化),您需要做的就是删除验证(如果它已经存在)。

如果您尝试向已经包含一个单元格的单元格添加验证,您将收到错误 1004。

Sub addPT_Validation()
    Dim sValidationList As String
    Dim cell As Range

    For Each cell In ThisWorkbook.Names("PT_Puldown").RefersToRange
        sValidationList = sValidationList & cell.Value & ","
    Next cell

    sValidationList = Left(sValidationList, Len(sValidationList) - 1)

    With ActiveSheet.Range("D1").Validation
        '/Delete first., in case of any any existing validation
        .Delete

        .Add Type:=xlValidateList, _
                AlertStyle:=xlValidAlertStop, _
                Operator:=xlEqual, _
                Formula1:=sValidationList
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowError = True
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)