我正在向现有的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中直接创建数据验证时,它是一个忽略空白单元格的复选框。
答案 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<>"")))
稍后更新您的宏或范围从=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