excel - 组合框,我如何从通过 listobject 检索的列表中排除空白
问题描述
尝试将数据应用于组合框,效果很好,除了它还包括过滤值。
我在字段 1 上过滤,按数字过滤,这一行中有几个空单元格,那些在字段 1 中有空单元格的单元格我这次不想看到。
我将第 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 循环来解决它,并在添加它之前检查每个单元格,但这会有点违背使用 2 行代码完成所有操作的目的。
有什么建议么
解决方案
但是,即使正确过滤,它也会添加我过滤掉的行。
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
推荐阅读
- java - 如何使用 JFrame 的多个实例并从另一个 JFrame 表单访问变量
- python-3.x - boto3 python SetupAWS.py 设置“aws 配置”
- phpstorm - PhpStorm Ubuntu 18.041 浏览器无法启动
- android - 如果 SQLite 为空或有记录,则更改片段中的视图
- c++ - 如何实现我的自定义范围 for 循环?
- php - Symfony 3.4 使用后不删除令牌
- python-2.7 - _init_cffi_1_0_external_module 上的 Python Cryptography 运行时错误
- ruby - 向 ruby 中的 api 发送 HTTP 发布请求
- google-chrome - Web 蓝牙不会检测到之前连接的设备
- c# - 继承是否包括扩展和实现?概念理解