龙空技术网

006.VBA循环语句Do While

科学奥秘探索 387

前言:

现时兄弟们对“oracleloopwhile”可能比较关注,各位老铁们都需要了解一些“oracleloopwhile”的相关知识。那么小编也在网摘上汇集了一些关于“oracleloopwhile””的相关文章,希望看官们能喜欢,同学们一起来学习一下吧!

大家好,我是永不止步的老牛。

上一篇我们介绍了VBA判断语句,本篇我们介绍VBA循环语句Do…While。

当我们在VBA编码中,在程序中需要重复执行某些代码时,就要用到循环语句,那些被重复执行的代码叫循环体,循环体加上循环的终止条件就是循环语句。

我们先看下Do...While的语法:

Do While 条件

代码1

代码2

代码n

Loop

执行这个循环语句时,首先先判断条件,如果是False,就执行Loop后面的代码,就是跳出循环体,相当于循环结束;如果是True,就执行代码1…代码n,当执行到loop时,就再次回到Do While 条件处,再次判断条件,如果是False,就执行Loop后面的代码,如果是是True,就执行代码1…代码n,当执行到loop时,就继续回到Do While 条件处,继续判断条件……一直这样循环,直到条件等于False。

我们用例子来展示一下,下表中如果1月销量大于100,就将数字变成粗体,代码如下:

Sub 设置粗体()

Dim i As Integer

i = 2

Do While Range("C" & i) <> ""

If Range("C" & i).Value >= 100 Then

Range("C" & i).Font.Bold = True

End If

i = i + 1

Loop

End Sub

首先定义了变量i,并给i赋值2,执行到Do While语句时,判断条件,条件中的Range("C" & i)就表示单元格C2,就是判断单元格C2的值是不是为空,如果不为空就执行循环体代码,循环体内的IF语句判断单元格C2的值,如果大于等于100,就将单元格C2的值设置成粗体,此时因为我们下来要判断的是C3单元格,所以就要给i加1,让下次Do While条件中的Range("C" & i) 变成了单元格C3,以此类推,直到循环到C6单元格,等于空,就跳出Do While循环,执行Loop语句后面的代码。

还可以用Cells(行号, 列号)来表示一个单元格,上述代码可以修改成:

Sub 设置粗体()

Dim i As Integer

i = 2

Do While Cells(i, 3) <> ""

If Cells(i, 3).Value >= 100 Then

Cells(i, 3).Font.Bold = True

End If

i = i + 1

Loop

End Sub

还可以用ActiveCell来控制,如下:

Sub 设置粗体3()

Range("C2").Select

Do While ActiveCell.Value <> ""

If ActiveCell.Value >= 100 Then

ActiveCell.Font.Bold = True

End If

ActiveCell.Offset(1, 0).Select

Loop

End Sub

语句Range("C2").Select表示选中了C2单元格,此时ActiveCell就是C2单元格,因为没有用到变量来控制循环,所以在循环体尾部,ActiveCell.Offset(1, 0).Select,就是让单元格往下移动1格。

Do While循环就是判断某个条件,如果是True,就执行循环体,直到条件返回False。

上述代码我们设置的条件是判断单元格是否为空,和具体有多少行数据没有关系,我们演示多复制一些数据,代码不需要变化,一样的效果。

特别要注意的是:一定要正确设计循环,避免无限循环,就是俗称的死循环,ESC也无法停止该循环,新手特别容易忽视循环的正确退出。

Do…While循环还有另外一种形式,语法如下:

Do

代码1

代码2

代码n

Loop While 条件

先执行代码1…代码n,然后判断条件,如果条件返回False,就跳出循环,如果条件返回True,就继续执行循环体代码1…代码n,然后再次判断,直到条件返回False,跳出循环。

这种形式的循环,循环体代码1…代码n最少被执行一次。

如果在循环体代码1…代码n中,如果满足某种情况,不想继续执行循环,直接跳出循环,可以使用语句Exit Do。

Exit Do 表示立即停止循环,跳出循环执行Loop之后的代码。

下面的示例演示了,从C2开始,往下循环,将第一个大于等于100的数字变成粗体。

为了看清楚循环体执行了几次,循环体的第一句就是将Range("C" & i)的值输出到立即窗口,可以看到执行到第5次,就是单元格C6时,因为值是110,大于100,设置成粗体,执行Exit Do,跳出循环。

今天就介绍到这,大家最好能自己实际练习一下,下一篇文章我们介绍VBA的其他循环语句。

标签: #oracleloopwhile