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)
在此先感谢您的任何指导。
您的所有代码都在工作(当然可以优化),您需要做的就是删除验证(如果它已经存在)。
如果您尝试向已经包含一个单元格的单元格添加验证,您将收到错误 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)