在Excel中通过VBA设置下拉列表验证

时间:2016-07-26 12:10:27

标签: excel excel-vba validation excel-2013 vba

我有一个VBA宏可以从主工作簿中复制两张工作表(一个用于收集数据的表单,一个带有一批查找下拉菜单的工作表),填充新工作簿并将其保存

由于下拉数据验证列表会在复制工作表时更新其链接,因此我必须重置验证以引用新的Lookups工作表。目前,我正在尝试这个(当然有不同的坐标):

With wsNew.Cells(19, 5)  ' Display on web schedule
    .Value = wsData.Cells(11, iColCount).Value
    .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Lookups!$B$2:$B$3"
    .Validation.IgnoreBlank = True
    .Validation.InCellDropdown = True
End With

一旦到达.Validation.Add Type...行,就会出现1004(“应用程序定义或对象定义的错误”)错误。

如果有任何方法可以复制工作表而不自动更新数据验证这将是理想的,但如果没有,是否有人知道是什么导致该代码中断以及如何解决它?

1 个答案:

答案 0 :(得分:1)

在尝试创建新数据之前删除所有先前的数据验证。

With wsNew.Cells(19, 5)  ' Display on web schedule
    .Value = wsData.Cells(11, iColCount).Value
    .Validation.DELETE
    .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Lookups!$B$2:$B$3"
    .Validation.IgnoreBlank = True
    .Validation.InCellDropdown = True
End With