如何在vba中使用do while循环?
VBA Do while 是一个循环,您需要指定一个条件,并且该条件必须保持为真才能执行循环。简而言之,它首先检查您指定的条件是否为真,如果该条件为真,则执行循环,否则不执行任何操作。
在每次迭代中,它都会测试条件,然后才执行指令。假设您想要在 Excel 中添加工作表,但完整工作表数量为 12 个或更少。在这种情况下,您可以使用 do-while 循环来编写此代码。
句法
以下是每个后续循环的 VBA 语法。
Do While Condition [statements] Loop
- Condition:这是你指定的条件,这个条件必须为真才能执行循环。
- 语句:您希望 Do While 循环执行条件为 true 的代码行。
- Loop :这是循环迭代的结束语句,告诉 VBA 返回再次测试条件。
了解 DO While 循环的示例
为了理解 Do While 循环,让我们编写一段代码,当工作表总数少于 12 个时,将工作表添加到工作簿中。您无需告诉 VBA 要添加多少个工作表,每次运行此代码时总共都会有 12 个工作表。
使用以下步骤:
- 首先,您需要在键盘上输入“Do While”。
- 接下来,您需要编写一个条件来检查工作簿中的工作表总数是否少于 12 个。
- 为此,您需要使用下面的代码,该代码计算工作表的总数,然后将其与数字 12 进行比较。
- 接下来,您需要编写代码来添加工作表。当您指定的条件为真时,此代码将运行。
- 最后,输入关键字“Loop”来完成代码。
这是您刚刚编写的完整代码:
Sub vba_do_while_loop() Do While ActiveWorkbook.Worksheets.Count < 12 Sheets.Add Loop End Sub
现在让我解释一下这段代码的工作原理:您指定的条件检查工作簿中的工作表总数,然后您有一个小于运算符来检查工作表数量是否为 12。
当工作表数量小于12时,循环将继续运行并不断添加新的工作表,但一旦工作表数量达到12,循环就会停止。
简单来说,只要工作表的数量少于十二个,循环就会继续运行。
事情是这样的,使用您刚刚编写的代码,您不需要指定要添加的工作表数量,但是如果进入下一个循环,您需要指定要添加的工作表计算数量。
做一个循环
Do Loop While 是 Do While Loop 的扩展版本,它的工作原理相同,但在测试条件时略有不同。
在 Do Loop While 中,它会在测试您指定的条件之前运行循环的一次迭代,如果条件为真,它将继续循环。
假设您想编写一些代码来检查密码,以运行一些代码并在密码不正确时继续循环(我们在示例中看到这一点)。
句法
以下是 VBA Do Loop While 的语法。
- Do:这是 Do While 循环的起始关键字。
- 语句:这是您要在循环中运行的代码行。
- Loop While:这是继续循环并测试您指定的条件的关键字。
- 条件:这是在循环开始第二次迭代并继续循环之前要测试的条件。
正如您在 Do Loop While 的语法中看到的,它首先会执行一次语句,然后会转到条件并测试它,如果条件为真,它将启动循环并继续执行 while 条件为真的。
了解 DO 循环 while 的示例
为了理解 do while 循环,让我们编写一些代码来显示输入框并要求用户输入密码。
该输入框将继续清楚地显示用户输入的密码不正确,最多尝试五次,之后输入框将消失而不执行该过程。
- 首先,声明两个用于存储密码和尝试计数器的变量。
- 之后,输入关键字“Do”。在这里,您不需要像在语法中看到的那样首先定义条件。
- 接下来,您需要编写一行代码来显示要求用户输入密码的输入框。
- 从这里您需要设置一个最多可以计数到五的计数器(每次循环迭代都会累加)。
- 现在输入关键字“Loop While”并设置两个条件,可以检查用户在输入框中输入的值,并可以测试计数器值是否小于5。
- 最后,编写您要运行的代码。这里我使用 IF 语句,如果用户输入的密码正确,它将显示一个消息框。
Sub vba_do_loop_while() Dim varPassword As Variant, i As Double Do varPassword = InputBox _ ("Enter the password to start the procedure:", _ "Check Password 1.0") i = i + 1 Loop While varPassword <> "CorrectPassword" And i < 5 If varPassword = "CorrectPassword" Then MsgBox "Your Password is Correct" End If End Sub
让我向您解释一下这段代码。
- 在此代码的第一部分中,您有 do while 循环,它将向用户显示一个输入框并要求他们输入密码。
- 而如果密码不正确,则会继续循环运行,直到用户输入正确的密码。
- 但是当您使用计数器来计算循环的迭代次数时,一旦该计数器达到 5,循环就会停止。