通过 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
我有一个 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