VB for循环为什么只进行1次?

fori=ntonstep1n=n+1if...thenexitforendifnexti这个问题是不是用While最好?... for i=n to n step 1
n=n+1
if... then
exit for
end if
next i
这个问题是不是用While最好?
展开
 我来答
unsamesky
2013-06-04 · TA获得超过2734个赞
知道小有建树答主
回答量:859
采纳率:100%
帮助的人:428万
展开全部

你的理解是错误的:

对于For循环来说,当计算机运行到For i = n to n step 1的时候,这个循环的区间就已经确定了。

比如:

n = 5

For i = n to n step 1

那么,这个For循环的循环区间就是[5~5],循环区间一旦确定,将不再发生变化。

也就是说:

n = n + 1

虽然这里的n=6,你认为For i = n to n就变成了 For i = 6 to 6了,实际上不是,无论你的n怎样发生变化,循环区间已经与n这个变量无关了,所以你的循环区间还是[5~5],不会变成[6~6]。

所以,你的循环只运行了一次。


对于一个For循环来说,循环区间一旦确定,不再变化,唯一能够影响循环运行的,就是循环变量的值。

所以,你将你的代码改成这样,就可以不断运行了:

Sub ddarf()
  For i = n To n Step 1
    n = n + 1
    i = i - 1   '这个时候,循环就可以无限运行了。因为Step =1,而i 每循环一次将自动减1
    If n = 10 Then
        Exit For
    End If
    MsgBox "n=" & n & ",i=" & i   '这里弹出一个窗口,用来查看n的变化。
    Stop  '这里加入一个Stop用作断点测试,防止死循环
  Next i
End Sub


当然,这种情况下,肯定是用Do ... Loop语句比较方便!!

百度网友c34f6e7
2013-06-05 · TA获得超过101个赞
知道小有建树答主
回答量:166
采纳率:88%
帮助的人:109万
展开全部
for i= n to n ?跟for i=1 to 1 有什么不同? 如果你不确定需要循环的次数。。要循环到满足条件用楼上的do loop就很好 while 也行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tonkeys
2013-06-04 · TA获得超过1513个赞
知道大有可为答主
回答量:2087
采纳率:33%
帮助的人:2424万
展开全部
如果中间有条件跳出,还是用do...loop比较灵活
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式