将数据验证(下拉)列表添加到一系列单元格?

时间:2019-04-08 01:59:17

标签: excel vba

我有很大的范围(“ 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 ...”行出现错误

1 个答案:

答案 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,等等。