excel - 组合框,如何从通过 listobject 检索的列表中排除空白

标签 excel vba

尝试将数据应用到组合框,效果很好,只是它还包含过滤值。

  1. 我对字段1进行过滤,按数字过滤,这一行有几个空单元格, 那些在 field1 中有空单元格的我这次不想看到。

  2. 我将第 13 列中的 databodyrange 值填充到组合框列表中,但即使过滤正确 它还添加了我过滤掉的行。

代码..

Private Sub UserFrom_Initialize()
  Dim db As ListObject
  Set db = Worksheets("baseOfData").ListObjects("database")

  db.Range.AutoFilter Field:=1, Criteria1:="<>"
  Me.cmbTasks.List = db.ListColumns(13).DataBodyRange.Value
End Sub

我可以通过运行 for 循环并在添加之前检查每个单元格来解决它 但这有点违背了用两行代码完成这一切的目的。

任何建议

最佳答案

however even when filtered correctly it also adds the rows i filtered away.

Me.cmbTasks.List = db.ListColumns(13).DataBodyRange.Value

那是因为你做错了。您指的是完整的列,而不是过滤的范围。试试这个

Dim db As ListObject
Set db = Worksheets("baseOfData").ListObjects("database")

db.Range.AutoFilter Field:=1, Criteria1:="<>"
Me.cmbTasks.List = db.DataBodyRange.Columns(13).SpecialCells(xlCellTypeVisible).Value

您可能面临的下一个问题是,仅当存在多个区域时,它才会显示第一个 Area 的值。

enter image description here

要解决这个问题,请尝试

Dim db As ListObject
Dim aCell As Range, rngArea As Range

Set db = Worksheets("baseOfData").ListObjects("database")

db.Range.AutoFilter Field:=1, Criteria1:="<>"

'~~> Loop through each area
For Each rngArea In db.DataBodyRange.Columns(13).SpecialCells(xlCellTypeVisible).Areas
    '~~> Loop though each cell in the area
    For Each aCell In rngArea
        cmbTasks.AddItem aCell.Value
    Next aCell
Next rngArea

enter image description here

关于excel - 组合框,如何从通过 listobject 检索的列表中排除空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451818/

相关文章:

vba - 如何根据列值对 xy 散点图中的点着色?

performance - VBA 剪贴板快速读取

xml - Excel vba 解析复杂 XML

返回 'Attempted to read or write protected memory' 错误的 C# 等效于 VB DLL 函数声明

excel - 在另一个单元格中输入数据并按 Enter 选项后转到特定单元格

excel - 检查对单元格的引用是否有效

javascript - 将分钟转换为秒

java - 从 HTML 复制/粘贴到 MS Excel 时如何处理换行符

vba - 通过草稿/发送/已发送过程跟踪电子邮件

arrays - VBA 第一个数组项始终为空