【问题标题】:Excel Macro add data validation list box to sheet - Blank cellsExcel 宏将数据验证列表框添加到工作表 - 空白单元格
【发布时间】:2016-05-11 14:26:46
【问题描述】:

我正在向现有 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 中创建数据验证时,它是一个忽略空白单元格的复选框。

【问题讨论】:

    标签: excel vba validation


    【解决方案1】:

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

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

    你也可以通过录制宏来获取这些代码

    【讨论】:

      【解决方案2】:

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

      转到名称管理器并创建新名称示例过滤列表

      然后对列表使用公式

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

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

      如果您想使用 vba 添加列表,请在代码上方使用下面的代码

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-01
        • 2014-09-24
        • 1970-01-01
        • 2012-06-21
        • 2016-11-06
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多