COMBOX中的项为什么无法删除?

来源:百度知道 编辑:UC知道 时间:2024/05/09 19:27:32
Private Sub Combo1_KeyPress(KeyAscii As Integer)
x = Chr(KeyAscii)
temp = srzm + x
srzm = temp

For i = 0 To Combo1.ListCount - 1
hzpy = ""
For ii = 1 To Len(Combo1.List(i))
hzpy = hzpy & pinyin(Mid(Combo1.List(i), ii, 1))
Next ii
If InStr(hzpy, srzm) <> 1 Then
Combo3.RemoveItem i '操作后针对这句提示"无效的调用或参数"
End If

Next i
On Error Resume Next
Combo1.ListIndex = i
End Sub
Combo3.RemoveItem i '操作后针对这句提示"无效的调用或参数"

这句写错了,应该是Combo1.RemoveItem i

补充说明一下:
这段程序是用键盘敲字母来搜询下拉列表框的,列表框中的内容都是汉字的,所以看起来有些繁索,不好意思..

请各位DX解释得清楚些,谢谢....

删除的循环要倒过来

For i = Combo1.ListCount - 1 to 0

你的代码看不太懂
怎么一会Combo1一会Combo3?
不过应该是下面的问题

用反序的For循环
也就是说代码改成
For i =Combo1.ListCount - 1 to 0 step -1

RemoveItem每次操作都会改变Combo1的数据集合,必须要反序遍历

比如你的Combo1有1,2,3,4,5五个数
用正序For循环时
开始i=0
如果先删除1
此时Combo1变成了2,3,4,5
下一次进入循环体时
i=1,跳到数据为3的项

你要删除的i比你Combo3中的项大了就会错这种错,你在if InStr(hzpy, srzm) <> 1 Then 后面输出i的值看看,学会自己调试程序