Excel宏将数据验证列表框添加到工作表 - 空白单元格

时间:2016-05-11 04:47:57

标签: excel vba validation

我正在向现有的Excel电子表格添加数据验证列表框。数据来自一个名为Data的单独表格。数据范围是A4 - A100;到目前为止,数据仅在A4-A10单元格中。

激活“数据验证列表”框时,它正在读取所有空白单元格。有办法阻止这个吗?

到目前为止我的代码:

    ''Code below is what I am using to create the list box
    With Range("A21:A42").Validation

        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Data!$A$4:$A$100"
    End With

我知道在Excel中直接创建数据验证时,它是一个忽略空白单元格的复选框。

2 个答案:

答案 0 :(得分:0)

您可以在代码中添加忽略空白部分: 例如。

With Range("A21:A42").Validation
   .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=Data!$A$4:$A$100", .IgnoreBlank = True
End With

您还可以通过录制宏

来获取这些代码

答案 1 :(得分:0)

您好您可以创建动态命名范围

转到名称管理器anc创建新名称示例filteredList

然后使用公式列表

=Data!$A$4:INDEX(Data!$A$4:$A$100,SUMPRODUCT(--(Data!$A$4:$A$100<>"")))

enter image description here

稍后更新您的宏或范围从=Data!$A$4:$A$100=filteredList

如果您想使用vba添加List,请使用代码上方的代码

ActiveWorkbook.Names.Add Name:="filteredList", RefersToR1C1:= _
    "=Data!R4C1:INDEX(Data!R4C1:R100C1,SUMPRODUCT(--(Data!R4C1:R100C1<>"""")))"
ActiveWorkbook.Names("filteredList").Comment = ""

===

With Range("A21:A42").Validation
   .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=filteredList"
End With