您的位置:58编程 > vb中do while循环语句 VB的Do…While循环语句

vb中do while循环语句 VB的Do…While循环语句

2023-03-21 02:33 ExcelVBA编程教程

vb中do while循环语句 VB的Do…While循环语句

vb中do while循环语句

Do While循环是Visual Basic中的一种循环语句,它可以在满足指定条件时重复执行一系列语句。Do While循环的基本语法如下:

Do 
    [Statements] 
Loop While [condition]

其中,[Statements] 是要重复执行的语句,[condition] 是一个布尔表达式,当其值为 True 时,循环体会重复执行。Do While 循环在执行时会先判断 [condition] 的值是否为 True;如果为 True 则执行循环体内的语句;如果为 False 则跳出循环。

Do While 循环有一些特殊情况需要注意:

  • 条件永远不会成立时
    如果 [condition] 的值永远不会成立(即永远不会变成 True ),那么 Do While 循环将永远不会被执行。因此在使用 Do While 循环时应当注意避免出现此情况。
  • 条件永远成立时
    如果 [condition] 的值永远都是 True ,那么 Do While 循环将会陷入死循环中。因此在使用 Do While 循环时应当注意避免出现此情况。
  • 条件永远不成立时
    如果 [condition] 的值永远都是 False ,那么 Do While 循环将只会执行一次。因此在使用 Do While 循环时应当注意避免出现此情况。
  • 条件改变否定部分的值时
    如果 [condition] 的值在循环体内部被修改了(例如将 False 设为 True ),那么 Do While 循环将会陷入死循环中。因此在使用 Do While 循

    VB的Do…While循环语句

    VB有两种Do循环语句,只要或者直到某个条件为真,它们就会重复一系列的语句。只要条件为真,Do…While循环就允许你重复某个操作。这个循环的语法如下:

    Do While 条件
    语句1
    语句2
    语句N
    Loop

    当VB遇到这个循环时,它首先条件的真假,如果条件为假,循环内部的语句就不会被执行,VB将继续执行关键字Loop后面的第一条语句。如果条件为真,循环里面的语句则会被一条一条地执行,直到遇到Loop语句。Loop语句告诉VB重复这个过程,只要Do While语句里的条件为真的话。

    现在,我们来看看如何在Excel里面好好利用Do…While循环语句。在前面的章节里,你学习了如何根据一个单元格的内容来作决定。让我们再进一步,看看如何在一系列单元格上作同样的决定。该决定是给一列中的非空单元格设置粗体格式。


    1.打开一个空工作簿,并且命名为Chap06.xls
    2.切换到VB编辑屏幕,并且将新工程改名为Repetition (Chap06.xls)
    3.在工程Repetition里插入一新模块,并重命名为DoLoops
    4.  输入如下过程:

    Sub ApplyBold()
    Do While ActiveCell.Value <>""
    ActiveCell.Font.Bold = True
    ActiveCell.Offset(1, 0).Select
    Loop
    End Sub

    5.  在单元格A1:A7里输入任意数据(文本或数字)


    6.  选择单元格A1


    7.  选择“工具”-“宏”-“运行宏”。在宏对话框里,双击过程ApplyBold(或者选中该过程然后点击运行)



    当运行过程ApplyBold时,VB首先评估Do While语句里的条件——ActiveCell.Value<>””,该条件意思是:只要当前单元格的值不是一个空字符串(””),就执行下列语句。因为你已经在单元格A1里输入了数据并且激活了该单元格(见第六步),第一个测试返回真,所以VB执行语句ActiveCell.Font.Bold = True,它的意思是给当前单元格设置粗体格式。接下来,VB选择了下一行的单元格(参见第二章里的Offset属性)。因为该语句之后就是关键字Loop,VB返回到Do While语句,并且再次检查条件。如果新选中的单元格(当前激活的单元格)不为空,那么VB就会重复循环内部的语句。该过程会继续,直到检查到单元格A8的内容为空,测试条件的结果为假,因此,VB就跳过循环内部的语句。并且在关键字Loop后面没有其它的语句了,所以该过程就结束了。


    我们来看看另外一个Do…While循环的例子。是不是很想知道如何在Excel的状态栏里显示今天的日期和时间?这里有个例子,如何让它显示十秒钟:

    Sub TenSeconds()
    Dim stopme
    stopme = Now + TimeValue("00:00:10")
    Do While Now < stopme
    Application.DisplayStatusBar = True
    Application.StatusBar = Now
    Loop
    Application.StatusBar = False
    End Sub

    在上面的程序里,只要函数Now返回的时间小于变量stopme的值,Do…While循环里的语句就会被执行。变量stopme储存值为当前时间加上十秒(参见在线帮助里的另外一个使用内置函数TimeValue的例子)。


    语句Application.DisplayStatusBar告诉VB打开状态栏的显示,下条语句则是将当前日期和时间放在状态栏上。当显示时间时(只显示10秒)用户无法使用系统(光标变成了沙漏)。十秒钟后(也就是,当条件Now < stopme为真),VB跳出循环并且执行关键字Loop后面的语句,该语句将状态栏返回到默认信息“就绪”。

    技巧:什么是循环?
    循环是一种导致一部分程序代码重复执行的编程结构。VBA提供了多种结构在你的过程里执行循环:

    Do…While, Do…Until, For…Next, For…Each, and While…Wend

    Do…While循环还有另外一种语法,你可以在循环的底部测试条件,例如:


    Do
    语句1
    语句2
    语句N
    Loop While 条件

    当你在循环的底部测试条件时,意味着循环里面的语句至少运行了一次。看一下这个例子:


    Sub SignIn()
    Dim secretCode As String
    Do secretCode = InputBox("Enter your secret code:")
    If secretCode = "sp1045" Then Exit Do
    Loop While secretCode <> "sp1045"
    End Sub
    

    注意,在条件被测试之时,VB至少已经执行了一次循环里的语句。除了将条件放在循环之后外,过程SignIn示范如何使用条件跳出循环。当Exit Do语句执行时,循环便立即停止。



    技巧:避免无限循环

    如果你没有正确地设计你的循环,你将导致一无限循环——永无休止的循环。你将无法使用Esc键来停止该循环。在下面的过程里,因为用户忘了放置测试条件而导致了永无休止的循环:

    Sub SayHello()
    Do
    MsgBox "Hello."
    Loop
    End Sub
    
    你必须按下Ctrl+Break键(现在,有些电脑使用别的组合键来中断程序。例如手提电脑有的就是Fn+Break)才能终止该无限循环,当VB显示信息“代码执行被中断”时,点击结束以退出过程。


阅读全文
以上是58编程为你收集整理的vb中do while循环语句 VB的Do…While循环语句全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS