我有很大的范围(“ C2:C100”)要添加下拉列表。
我尝试了以下操作:
With Worksheets("Sheet2").Range("c2:c100").Validation
.Add xlValidateList, xlValidAlertStop, xlBetween, "=Sheet3!a2:a5"
.InCellDropdown = True
End With
但这仅适用于单元格C2。因此,我尝试了:
With Worksheets("Sheet2").Range("c2:c100")
With .Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet3!a2:a5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End With
并且继续在“ .Add Type ...”行出现错误
答案 0 :(得分:0)
在将Validation添加到范围之前,您需要确保已从所有单元格中删除所有Validation。如果不存在,则在.Add之前运行.Delete不会产生任何错误,并删除存在的任何错误。
With Worksheets("Sheet2").Range("c2:c100").Validation
.Delete
.add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Sheet3!$A$2:$A$5"
.InCellDropdown = True
End With
我更喜欢使用命名参数;尤其是当这些参数为可选参数时。
您需要使列表范围参考绝对,否则列表将相对于单元格位置。例如C3为Sheet3!A3:A6,C4为Sheet3!A4:A7,等等。