VB中的一段Exit For 懵了

果果幻听 2018-07-11 08:18:53
Private Sub Command1_Click()
Dim X As Integer
While LstLeft.SelCount > 0
For X = 0 To LstLeft.ListCount - 1
If LstLeft.Selected(X) = True Then
LstRight.AddItem LstLeft.List(X)
LstLeft.RemoveItem X
Exit For
End If
Next X
Wend
End Sub


为什么这个Exit For一定要加,不加还出错啊,求大神指导一下,想了一晚上了,不是说如果加了Exit For就立即跳出循环嘛,那如果我选择两项,按道理来说,执行到第一项剪切到其他LIST里面就停止了嘛,但是程序跑完,两项都添加进去了,麻烦了...
...全文
247 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2018-07-12
  • 打赏
  • 举报
回复
当你删除了,list下标就变了,只好退出循环重新遍历

其实不需要这么麻烦,只要For X = LstLeft.ListCount - 1 To 0 Step -1
就可以了,从后往前删。
果果幻听 2018-07-12
  • 打赏
  • 举报
回复
感谢两位大神,本人小白,如果有空的话,以后多多指教,谢谢
舉杯邀明月 2018-07-11
  • 打赏
  • 举报
回复
跳出了For循环,但它又要开始“下一次While循环”啊…… 这样For循环就重新开始执行了。

实际上这个For循环,就是“一遍又一遍的扫描”、每次找到一个“选定项”,就“移”到另一个列表中去。

其实,它这个“两层循环”执行效率比较低的,不过如果数据项不太多,也很快处理完了,可以忽略效率问题。
如果“For循环倒序扫描”,可以一次循环就搞定完了,效率高得多。

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧