所以我的用户表单有: 列表框名为“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
答案 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)
在这种情况下的另一个选择是以相反的顺序迭代。从列表底部开始,您不必担心调整索引,因为通过删除项目下方的项目不会影响进一步的项目。