2017-08-04 232 views
2

所以,我打开一个新的Excel工作表只是通过VBA了解更多关于数据验证的创建和我进入下面的代码是从的Microsoft Developer Network网站的例子:VBA Validation.Add方法失败

With Range("$E$5").Validation 
.Add Type:=xlValidateWholeNumber, _ 
AlertStyle:=xlValidAlertStop, _ 
Operator:=xlBetween, Formula1:="5", Formula2:="10" 
.InputTitle = "Integers" 
.ErrorTitle = "Integers" 
.InputMessage = "Enter an integer from five to ten" 
.ErrorMessage = "You must enter a number from five to ten" 
End With 

我得到了下面的错误,当我执行的代码:

运行时错误 '-2147417848(80010108)':

Method对象的'添加 '验证' 失败

我到处搜寻,但没有发现对这个问题什么...

+3

您是否已经在E5设置中进行了验证?如果是这样,请尝试在添加新文件之前用'.Delete'删除它。 –

回答

1

如果发生这种情况已经存在的目的细胞的验证。因此,如果您在新的工作表上运行该代码,该代码运行良好,但第二次将失败。

因此,请在添加新验证之前删除任何验证。

With Worksheets("Sheet1").Range("$E$5").Validation 
    .Delete 'delete validations first 

    .Add Type:=xlValidateWholeNumber, _ 
     AlertStyle:=xlValidAlertStop, _ 
     Operator:=xlBetween, Formula1:="5", Formula2:="10" 
    .InputTitle = "Integers" 
    .ErrorTitle = "Integers" 
    .InputMessage = "Enter an integer from five to ten" 
    .ErrorMessage = "You must enter a number from five to ten" 
End With 

请注意,您应该始终指定一个表为您范围像Worksheets("Sheet1").Range以避免任何问题。

+0

好的,所以我在添加之前添加了Delete方法,并确保对该特定单元格没有验证。当我再次运行代码时,发生了同样的错误。我使用的特定工作表的行实际上是:'With Sheet1.Range(“$ E $ 5”)。Validation'。我不认为我有问题,但我会尝试'工作表(“Sheet1”)' –

+0

@ V.Stoyanov这段代码绝对有效,我测试了它。如果您仍然有任何问题,您需要发布更多信息。 –

+0

好吧,所以我使用了相同的代码,但是在2016版本中,它没有问题或错误。仍然感谢您的支持! –