从ListView中删除项目时VBA运行时错误35600

时间:2016-09-27 10:48:11

标签: vba listview

我想请求有关运行时错误35600"索引越界的帮助"。

我正在尝试从Multicolumn-ListView中删除与Combobox-Value不匹配的所有项目。 但是,似乎在删除过程中,我的代码到达了一个Point,其中listitems-index小于所选项的索引。

有谁知道如何解决这个问题?以下是我的看法:

Private Sub ComboBox1_Change()

Dim i As Integer
Dim strSearch As String

strSearch = Me.ComboBox1

For i = 1 To ListView1.listItems.Count
    If Me.ListView1.listItems(i).SubItems(3) = strSearch Then
        Me.ListView1.listItems(i).Checked = True
    End If
Next i
For i = 1 To ListView1.listItems.Count
    If ListView1.listItems(i).Checked = False Then
        Me.ListView1.listItems.Remove (ListView1.selectedItem.Index)
    End If
Next i

End Sub

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以尝试以相反的顺序删除它们(因此仅适用于第二个循环);我认为基本上看起来像:

For i = ListView1.listItems.Count To 0 Step -1

可能在每次循环后都没有重新计算计数器,因此会高于导致数字太多的元素数量(超过存在的列表项数量导致索引超出范围异常)。

答案 1 :(得分:0)

'Removing part
With ListView1
    For i = .ListItems.Count To 1 Step -1
        If Not .ListItems(i).Checked Then
            .ListItems.Remove i
        End If
    Next
End With