VB:列表框和组合框的方法

PrivateSubCommand1_Click()Dimi%,j%,FoundAsBooleanIfList1.SelCount>0Then'从后往前,对选中的项查找对... Private Sub Command1_Click()
Dim i%, j%, Found As Boolean
If List1.SelCount > 0 Then
'从后往前,对选中的项查找对方有无相同的项,若没有则移进去
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) Then
Found = False
j = 0
Do
If List2.List(j) = List1.List(i) Then
Found = True
Else
j = j + 1
End If
Loop Until j = List2.ListCount Or Found
If Not Found Then
List2.AddItem List1.List(i)
List1.RemoveItem i
End If
End If
Next i
End If
End Sub

Private Sub Form_Load()
List1.AddItem "北京"
List1.AddItem "上海"
List1.AddItem "广州"
List1.AddItem "香港"
List1.AddItem "澳门"
List2.AddItem "北京"
List2.AddItem "上海"
List2.AddItem "天津"
List2.AddItem "重庆"
End Sub
为什么要使用For i=list1.listcount-1 to 0 step-1
这种循环方式从后往前处理呢?
展开
 我来答
寒信HK
2013-07-07 · TA获得超过1876个赞
知道大有可为答主
回答量:1326
采纳率:92%
帮助的人:384万
展开全部
这是为了避免出错。如果你用由前往后
For i=0 to list1.listcount-1 的话,当第一次执行到for语句,会自动把list1.listcount代入计算,也就是
for i=0 to 8,此后循环次数不再受list.listcount的影响。一但后面List1.RemoveItem i 执行后,list1里的项目就会减少一个,list1的下标就变成0到7,循环执行到i=8时就会出现 下标越界的错误
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式