以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  [求助]学习VBS,guotx2010能提供跳出内部循环的例子吗?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=7802)

--  作者:伍星亮
--  发布时间:2011/8/31 11:28:49
--  [求助]学习VBS,guotx2010能提供跳出内部循环的例子吗?

在写序列模型的时候需要跳出内部循环,回到大循环中。这点在金字塔语言中做不到。所以要学VBA。

 

guotx2010能借你几分钟时间帮我写个简单的例子吗?


--  作者:26327756l
--  发布时间:2011/8/31 11:31:54
--  

有时候,你并不想等到循环自己结束,可能是用户输入了错误的数据,过程遇到了错误或者可能是任务已经完成并且没有必要作更多的循环。你可以提前跳出循环,而不必等到条件正常结束。VB有两种Exit语句:

n         Exit For语句用来提前退出For…Next或者For Each…Next循环

n         Exit Do语句立即退出任何VBA Do 循环

下面的过程示范如何使用Exit For语句提前跳出For Each…Next循环:

1.       在当前模块里输入下列过程:

Sub EarlyExit()

Dim myCell As Range

 

For Each myCell in Range("A1:H10")

If myCell.Value = "" Then

myCell.Value = "empty"

Else

Exit For

End If

Next myCell

End Sub


--  作者:guotx2010
--  发布时间:2011/8/31 12:41:48
--  

这个是经常遇到的,其实很简单:

 

For i=1 to 100

    For j=1 to 90

         \'正常的代码处理

         ...

         \'判断是否要退出内层循环,如果是就使用Exit For

         If 条件成立 then

               Exit For           \'如果循环体不是For而是Do While,则使用Exit Do

         End if

    Next

    \'退出之后,你可以使用Application.msgout j,显示此时的j的值就知道是不是提前退出的,如果等于91说明不是提前退出,否则就是提前退出

    Application.msgout j

Next

 

[此贴子已经被作者于2011-8-31 12:42:55编辑过]

--  作者:伍星亮
--  发布时间:2011/8/31 13:14:51
--  

万分感谢两位高人赐教。