如何删除列表框中的多个选择?

时间:2014-12-08 02:16:54

标签: vba excel-vba listbox excel

所以我的用户表单有: 列表框名为“lstentries” 单选按钮称为“删除”。 此外,“开始”是行表左上角的单元格的名称。

我已经设置了代码,因此可以在列表框中选择多个条目。但是,当我选择多个条目时,它只删除它所到达的第一行。所以我尝试制作一个while循环,以便它不断删除所选的那些,但这也不起作用。我得到“运行时错误'1004' - 对象'_Global'的方法'范围'失败了”

希望有人可以帮助我。以下是删除行的代码片段。提前致谢。

If optDelete.Value = True Then
        Dim delete As Range
        Do While True
            Set delete = Range("start").Offset(lstEntries.ListIndex, 0)
            delete.EntireRow.delete Shift:=xlUp
        Loop
    End If

2 个答案:

答案 0 :(得分:0)

在列表框中,您可以浏览项目列表。由于您允许选择和删除多个项目,因此您必须在删除项目时调整索引。

列表框为0索引,表示它从0开始而不是1。

' set the to go through all items in the list
For listIndexCount = 0 To lstEntries.ListCount

    ' check to make sure the index count is not greater or equal to the total number of items
    ' this is needed because the ListCount will change if items are deleted
    If listIndexCount >= lstEntries.ListCount Then
        Exit Sub
    End If

    ' check to see if the item is selected
    If lstEntries.Selected(listIndexCount) Then

        ' remove item
        lstEntries.RemoveItem (listIndexCount)

        ' subtract 1 to account for removed item
        listIndexCount = listIndexCount - 1
    End If
Next

答案 1 :(得分:0)

在这种情况下的另一个选择是以相反的顺序迭代。从列表底部开始,您不必担心调整索引,因为通过删除项目下方的项目不会影响进一步的项目。