Excel VBA 编程基础 -- 语句(十一)- 循环语句(四)
- 2026-11-10 03:24:47
Excel VBA 编程基础 -- 语句(十一)- 循环语句(四)今天我们讨论另外两种循环语句: Do ... Loop While 结构 以及 Do ... Loop Until 结构 这两种 Do ... Loop While/ Until 循环结构与前两天讨论的 Do While/Until ... Loop 循环结构不同: 从这个区别可以看出,如果循环需要至少执行一次的话,就使用 Do ... Loop While/Until 循环结构。 还是来看例子。 例1. 要求用户输入密码 这种场景使用 Do ... Loop While 结构是最自然的。首先,进入循环,要求你输入一个四位数字的密码,然后,测试你的输入。如果你的输入不符合要求,就一直循环提示你输入,直到输入满足要求为止。 这个例子也可以用 Do ... Loop Until 表达如下: 注意:While 的条件是 Not pwd Like "####",而 Until 的条件是 pwd Like "####"。我们已经说过,While 的条件 W_condition 和 Until 的条件 U_condition 是互为相反的关系: 上面的例子再一次印证了这个关系。 这个例子,如果使用 Do While ... Loop 结构表达,可以是这样: Do While 循环的特点是进入循环之前先测试循环条件,如果条件不满足,则跳过循环。对于我们这个例子,条件就是 Not pwd Like "####",也就是说,pwd 的值不是四位数字。如果 pwd 不是四位数字,则一直循环,提示用户输入,直到条件不满足,即 pwd 的值是四位数字的时候,结束循环。 为了避免在进入循环之前因偶然原因使得 pwd 的值含有四位数字,所以在进入循环之前先对 pwd 进行初始化,赋以空字符串。这样就能确保:如果 pwd 含有四位数字,则一定是用户输入的结果。 如果用 Do Until ... Loop 结构表达,则是这样: 与 Do While ... Loop 结构的唯一不同是条件表达式:pwd Like "####"。Do Until 结构的意思是:循环直到该条件满足。因为在进入循环之前,pwd 被赋以空字符串(Empty),所以满足 pwd Like "####" 条件的 pwd 一定是用户输入的结果。 从以上的“同一场景,四个循环结构”的不同写法中,我们可以得出结论: 相关阅读 Excel VBA 编程基础 -- 语句(八)- 循环语句 Excel VBA 编程基础 -- 语句(九)- 循环语句(二) Excel VBA 编程基础 -- 语句(十)- 循环语句(三)
Do[ statements ][ Exit Do ][ statements ]Loop While condition
Do[ statements ][ Exit Do ][ statements ]Loop Until condition
Do While/Until condition ... Loop:进入循环前先测试条件,如果条件不满足,则跳过循环。 先测试,再循环,循环次数大于等于零 Do ... Loop While/Until condition:先进入循环,然后再测试条件,即使条件不满足,也已经做过一次循环。 先循环,再测试,循环次数大于零
Dim pwd As StringDopwd = InputBox("请输入四位数字密码:")Loop While Not pwd Like "####"Debug.Print "你输入的密码是:" & pwd
Dom pwd As StringDopwd = InputBox("请输入四位数字密码:")Loop Until pwd Like "####"Debug.Print "你输入的密码是:" & pwd
W_condition = Not U_condition U_condition = Not W_condition
Dim pwd As Stringpwd = EmptyDo While Not pwd Like "####"pwd = InputBox("请输入四位数字密码:")LoopDebug.Print "你输入的密码是:" & pwd
Dim pwd As Stringpwd = EmptyDo Until pwd Like "####"pwd = InputBox("请输入四位数字密码:")LoopDebug.Print "你输入的密码是:" & pwd
先测试,再循环:进入循环之前必须初始化相关的变量(如 pwd),以确保相关变量的值是通过循环获得而非偶然因素使然。 先循环,再测试:因为相关变量(如 pwd)是通过循环获得,因此不需要初始化。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。