【问题标题】:Allow listbox to display no results when ListBox.RowSource returns no results当 ListBox.RowSource 不返回任何结果时,允许列表框不显示任何结果
【发布时间】:2017-04-04 12:09:19
【问题描述】:

我目前正在使用以下代码在表单中填充 ListBox:

'Populate In-Form Table
With ListBox_InFormTable
   .ColumnCount = 4
   .ColumnWidths = "100;100;100;50"
   .RowSource = ws.Range("MasterDataTable").SpecialCells(xlCellTypeVisible).Address
End With

但是,我也在积极过滤列表框中显示的内容以及表单中的其他字段。这很好用,除非我过滤掉所有结果。而不是收到一条错误消息:“未找到任何单元格。”我宁愿把表格留空。

任何帮助将不胜感激,我一直在努力解决这个问题。

谢谢!

【问题讨论】:

    标签: excel vba listbox userform


    【解决方案1】:

    你可以试试这样的……

    Dim n As Long
    With ListBox_InFormTable
       .ColumnCount = 4
       .ColumnWidths = "100;100;100;50"
       On Error Resume Next
       n = ws.Range("MasterDataTable").SpecialCells(xlCellTypeVisible).Rows.Count
       On Error GoTo 0
       If n > 0 Then
        .RowSource = ws.Range("MasterDataTable").SpecialCells(xlCellTypeVisible).Address
       End If
    End With
    

    如果您正在过滤 Excel 表格,您可以按如下方式计算过滤后的行...

    Dim n As Long
    With ListBox_InFormTable
       .ColumnCount = 4
       .ColumnWidths = "100;100;100;50"
       On Error Resume Next
       n = ActiveSheet.ListObjects("MasterDataTable").Range.Resize(, 1).SpecialCells(xlCellTypeVisible).Count
       On Error GoTo 0
       If n > 0 Then
        .RowSource = ws.Range("MasterDataTable").SpecialCells(xlCellTypeVisible).Address
       End If
    End With
    End Sub
    

    【讨论】:

    • 这似乎有效,但是我用来过滤表单列表框的代码现在似乎并不能始终如一地工作。这是代码:ActiveSheet.ListObjects("MasterDataTable").Range _ .AutoFilter Field:=1, Criteria1:="=*" & TextBox_Employee.Value & "*"
    • 添加了另一段代码,看看现在是否适合你。
    • 如果没有看到数据和完整的代码,很难说出错误背后的原因。虽然我已经为所有可能的情况提供了解决方案,但您需要自己查看以了解哪种方法最适合您。
    猜你喜欢
    • 2017-12-28
    • 2017-12-09
    • 2020-10-03
    • 2017-03-19
    • 2017-05-20
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多