2016-11-04 73 views
0

我想通過使用一個循環的執行列表的數據驗證,但我在這條線的錯誤1004拋出:VBA與數據驗證列表循環

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:="=lista" & i 

這是整個代碼:

Sub sampllle() 
    For i = 2 To 6 
    With Sheets("HSZI AD").Range("H972:H978").Validation 
     .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:="=lista" & i 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
    Next i 
    End Sub 

回答

0

我意識到,我必須有在,我想轉換成數據驗證列出了一些細胞值問題。它現在可以工作

0

讓我們退後一步。您的代碼似乎會應用驗證五次,但您每次都將其刪除,以便只保留最後一次。你有命名範圍「lista2」等?

+0

.delete函數沒有保存在那裏,你是對的。我希望單元格h972-h978是數據驗證列表,其中公式分別是lista2,lista3,它們是現有的已命名範圍 –

+0

您的意思是說H972有lista2,H973有lista3等?在這種情況下,H978將有lista8超出你的循環? – SJR

+0

是的,但問題在於addtpye行。如果它超出我的循環,它仍然會說同樣的錯誤。 –

0

試試這個

Sub sampllle() 

Dim i As Long 

Sheets("HSZI AD").Range("H972:H978").Validation.Delete 

For i = 2 To 6 
    With Sheets("HSZI AD").Range("H972").Offset(i - 2).Validation 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:="=lista" & i 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
Next i 

End Sub