vba - VBA - 从列表框中删除空项目
问题描述
我想从我用数组创建的 ListBox 中删除空项目。但是,在某些时候,每次更新 ListCount 值时,代码都会失败。我该如何克服这个问题?
Private Sub RemoveEmptyRows(lst As msforms.ListBox)
With lst
For i = 0 To .ListCount - 1
If .List(i) = False Then
.RemoveItem i
End If
Next
End With
结束子
解决方案
请尝试下一个代码:
Private Sub RemoveEmptyRows(lst As msforms.ListBox)
Dim i As Long
With lst
For i = .ListCount - 1 To 0 Step -1
If .List(i) = Empty Then
.RemoveItem i
End If
Next
End With
End Sub
迭代必须向后进行。否则,删除项目后,它们的引用将丢失......
这就是为什么你的解决方案,即使不是很有效,也能奏效。每次删除项目后,都会使用所有现有项目的新引用重新开始迭代。
推荐阅读
- java - JasperReport 在 WildFly 中找不到符号 JREvaluator,无需服务器即可工作
- r - 如何避免for-loop *or*如何在迭代过程中动态更新purrr::map得到的结果?
- django - DetailView 中的多个独立表单
- javascript - Axios - 设置拦截器以在错误时重试原始请求
- php - WooCommerce 我的帐户仪表板:编辑帐单地址的直接链接
- java - 如何在 Java 中打开不阻止外部“安全保存”的文件?
- pandas - pd.read_sql_query 字符串列表参数折叠到第一个元素
- inno-setup - 在源中使用 {src} 时,Inno 设置中的“文件不存在”错误
- firebase - 使用 Python 3.7 和 firebase 的 Google 云函数构建错误
- asp.net-core - 如何向 ASP.NET Core Web API 添加视图?