【发布时间】:2017-01-02 01:27:07
【问题描述】:
Range("C4").Select
Application.CutCopyMode = False
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Materials"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
我正在尝试使用宏对一个单元格进行数据验证。这样,当您选择材料时,图表会自动更改。代码中的材料是数据验证范围,我命名了希望解决错误的范围。
所以主要问题是宏在运行时会给出“运行时错误 1004”。如果我调试并将我的黄色光标向后退几步并使用 f8,它会完美运行。我从记录宏中获取此代码。代码似乎是正确的,但我不知道为什么宏会给出错误。
【问题讨论】:
-
删除
Range("C4").Select这一行并将With Selection.Validation替换为With ThisWorkbook.Sheets("Sheet1").Range("C4").Validation还将“Sheet1”更改为相关工作表名称,然后重试 -
不幸的是没有工作:(。我知道有很多事情要避免选择,但避免它并不能一直解决问题。如果你知道如何正确使用它,它将毫无问题地工作. 我有 1 个月的宏工作,使用了很多选择和激活,完全没有问题。在您的解决方案中,它无法识别 thisworkbook,因为它适用于模块。即使我删除了它,程序总是在 .添加 Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Materials" 代码。感谢您的帮助!
-
好的。几个问题...
1代码是否在具有Materials命名范围的同一工作簿中?2代码是否试图在运行它的同一工作簿中添加 DV 列表?3如果上述问题的答案是“是”,那么您是否打开了多个工作簿?如果是,请关闭它们并重试。 -
工作簿中没有代码。它位于工作簿的模块上。它使用其他工作簿来构建另一个结果工作簿。数据验证部分在结果工作簿上。材料表在一张纸上,我正在尝试将数据验证构建到另一张纸上。
标签: excel validation vba