While…Wend语句是For…Next语句的变形。当循环的执行次数根据条件而变动时,应使用While…Wend语句。其语法结构如下:
While Expression
Statement1
Wend
条件在循环的上面就被测试,只要提供的条件为真,这些语句就会被执行。一旦条件为假,VB就将退出该循环。
例如,从数据库中查询获取符合条件的记录,由于不确定记录数量,可先判断是否是数据(Recordset的EOF属性),再决定是否要进行循环。示例如下:
…(略)
Set rs1=adocon.Execute(SQLstr) '产生一个Recordset
While Not rs1.EOF '判断是否有数据
…(略)
rs1.MoveNext '移到下一条记录
Wend
上述程序片段中,使用了ADO组件的Connection对象及Recordset对象,在第二行先判断rs1对象变量是否到了记录结尾(rs1.eof)。如果不是,便进入循环。执行代码后,以MoveNext方法移动到下一条记录,重新进行判断。如果到达记录结尾,则跳出循环。
语法:
While 条件
[语句]
[Continue]
[Exit]
[语句]
Wend
组成:While:循环开始
条件:任何合法的布尔行表达式。表达式值为真,循环将继续执行
语句:要反复执行的语句
Continue:如果存在Continue语句,将跳过循环中剩下的语句并继续执行循环的下一次迭代。Continue语句的可选参数使你能在多层嵌套的循环中指出要继续执行哪个循环的迭代。
Exit: 如果存在退出语句,循环将终止执行并继续执行跟在循环后面的下一行代码。
Wend: 循环的结尾。将对条件进行求值以确定是否要结束循环。
说明:
1.如果条件为真,所有语句都会被执行到知道遇到Wend语句。如果条件仍为真,这个过程重复。如果为假,将执行Wend语句后的代码。
2、While…Wend语句能无限层嵌套。每个Wend都有一个While相匹配。允许循环内使用Dim语句,While也不例外。
3、在循环执行时,它将抢占界面,阻止用户通过菜单和控件进行交互操作。如果循环紧密,要耗费较多资源,你可以将循环其中的代码移动到单独的线程(Thread)中,将循环放在后台执行。
范例:
Dim x As Integer
While x<100
x=x+1
Wend