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

Setting drop-down list validation by VBA in Excel

我有一个 VBA 宏来复制两个 sheet(一个用于收集数据的表单,一个 sheet 用于下拉列表的一批查找菜单),填充新工作簿并将其保存。

因为下拉数据验证列表会在复制 sheet 时更新它们的链接,所以我必须重置验证以引用新的 Lookups sheet。目前,我正在尝试这个(当然坐标不同):

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:$B"
    .Validation.IgnoreBlank = True
    .Validation.InCellDropdown = True
End With

一到达 .Validation.Add Type... 行,它就中断并出现 1004 ("Application-defined or object-defined error") 错误。

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

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

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:$B"
    .Validation.IgnoreBlank = True
    .Validation.InCellDropdown = True
End With