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

问题描述 投票:0回答:3

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

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

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

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
vba excel listbox
3个回答
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

0
投票

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


0
投票

我无法根据 etabs v21 中的截面属性选择框架和墙壁,然后删除选定的框架和墙壁。谁能向我建议使用 Excel VBA 代码来完成此操作的代码

© www.soinside.com 2019 - 2024. All rights reserved.