2017-08-04 120 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版本中,它沒有問題或錯誤。仍然感謝您的支持! –