我想请求有关运行时错误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
答案 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