VB6 两个listview对比删除出错,求助

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:41:53
Private Sub Command11_Click()
Dim i As Integer
Dim j As Integer

With ListView1.ListItems
For i = 0 To ListView1.ListItems.Count - 1
With ListView2.ListItems
For j = ListView2.ListItems.Count - 1 To i + 1 Step -1
If ListView2.ListItems(j).Text = ListView1.ListItems(i).Text Then
' .RemoveItem i
ListView1.ListItems.Remove i
End If
Next j
End With
Next i
End With
End Sub

提示If ListView2.ListItems(j).Text = ListView1.ListItems(i).Text这行出错。求解决方法!!!谢谢

不能这样写的,你把listview1中的一项删除了, ListView1.ListItems.Count的值就变了,for循环的上下界在运行时是不能变的,所以会报错

建议:建个数组,用来保存你要删除的选项值,每找到一个便把选项值保存到数组,等全部for循环完毕,集中删掉

假如你其它代码已经全部写完
....
listview1.ListItems.Add , ,xlapp.worksheets(1).range("a5")'这个地方必须使用listview的add方法来确定行的首元素而下面紧跟的 则是行的第二个元素 赋内容方法则是不同的
listview1.ListItems(1).SubItems(1) =xxx
'第一行的第二个元素(含首元素)
这两行通常一块使用
....
如果代码没全部完成 情看下面
首先需要引用Microsoft Excel Object Library
如果是VB6的话,是工程-引用-Microsoft Excel 11.0 Object Library