尝试将数据应用到组合框,效果很好,只是它还包含过滤值。
我对字段1进行过滤,按数字过滤,这一行有几个空单元格, 那些在 field1 中有空单元格的我这次不想看到。
我将第 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
的值。
要解决这个问题,请尝试
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
关于excel - 组合框,如何从通过 listobject 检索的列表中排除空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451818/