2016-11-04 1 views
0

Ich mag würde die Datenvalidierung einer Liste durch die Verwendung einer Schleife auszuführen, aber ich habe einen Fehler 1004 auf dieser Linie geworfen:vba for-Schleife mit Datenvalidierungsliste

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

dies ist der gesamte Code:

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 

Antwort

0

ich das Problem erkennen, dass ich in den Zellen eines gewissen Wert zu gehabt hatte, die ich in der Datenvalidierung Listen umwandeln wollte. Es funktioniert jetzt

0

Machen wir einen Schritt zurück. Ihr Code scheint die Validierung fünf Mal anzuwenden, Sie löschen sie jedoch jedes Mal, sodass nur die letzte übrig bleibt. Haben Sie benannte Bereiche "lista2" usw.?

+0

die .Delete-Funktion war nicht zu da, Sie sind richtig. Ich möchte, dass die Zellen h972-h978 eine Datenvalidierungsliste sind, wobei die Formel lista2 bzw. lista3 ist, die bestehende benannte Bereiche sind. –

+0

Meinst du, dass H972 lista2, H973 lista3 usw. hat? In welchem ​​Fall wird H978 lista8 haben, was außerhalb Ihrer Schleife liegt? – SJR

+0

ja ist es, aber das Problem ist mit der Zeile addtpye. Wenn es jenseits meiner Schleife ist, sagt es immer noch den gleichen Fehler. –

0

Versuchen Sie, dieses

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