首页 > 解决方案 > 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

结束子

标签: vbalistboxlistboxitem

解决方案


请尝试下一个代码:

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

迭代必须向后进行。否则,删除项目后,它们的引用将丢失......

这就是为什么你的解决方案,即使不是很有效,也能奏效。每次删除项目后,都会使用所有现有项目的新引用重新开始迭代。


推荐阅读