VBA中Do...Loop循环语句的运用

基本介绍

Do...Loop 是VBA中的一种循环语句,用于重复执行特定的代码块,直到满足特定条件为止。有几种不同的方式可以使用Do...Loop,分别是Do WhileDo UntilDo...Loop While 和 Do...Loop Until

以下是几种常见的 Do...Loop 使用情景和示例:

1. Do While 循环

Do While 循环会在指定条件为真时执行循环体内的代码。

Do While condition
    ' 代码块
Loop

示例:

Dim i As Integer
i = 1

Do While i <= 10
    Debug.Print i
    i = i + 1
Loop

这段代码会打印出1到10的数字。

2. Do Until 循环

Do Until 循环会在指定条件为假时执行循环体内的代码。

Do Until condition
    ' 代码块
Loop

示例:

Dim i As Integer
i = 1

Do Until i > 10
    Debug.Print i
    i = i + 1
Loop

这段代码同样会打印出1到10的数字。

3. Do...Loop While 循环

Do...Loop While 循环会在执行循环体内的代码至少一次后,检查条件是否为真,如果为真则继续执行。

Do
    ' 代码块
Loop While condition

示例:

Dim i As Integer
i = 1

Do
    Debug.Print i
    i = i + 1
Loop While i <= 10

这段代码同样会打印出1到10的数字。

4. Do...Loop Until 循环

Do...Loop Until 循环会在执行循环体内的代码至少一次后,检查条件是否为真,如果为假则继续执行。

Do
    ' 代码块
Loop Until condition

示例:

Dim i As Integer
i = 1

Do
    Debug.Print i
    i = i + 1
Loop Until i > 10

这段代码同样会打印出1到10的数字。

注意事项:

在使用 Do...Loop 循环时,务必确保在循环体内修改了控制循环的条件,否则可能导致死循环。

可以在循环体内使用 Exit Do 语句来提前退出循环。

实际示例

100以内的加减法训练

下面是整体的思路:

1. 设置工作表和列宽度:
    Set a = Worksheets(1): 将变量 "a" 设置为第一个工作表,以便对该工作表进行操作。
    Range("a:f").ColumnWidth = 15: 设置第一列到第六列的列宽为15,确保题目和答案可以适当显示。

2. 循环生成题目:
    使用两个嵌套循环,外部循环控制行数,内部循环控制列数。
    随机生成一个0到1之间的数 "r",以确定是生成加法还是减法题目。

3. 生成加法题目:
    若 "r" 大于0.5,则生成一个加法题目:
    随机生成两个介于1到99之间的数字 "m" 和 "n"。
    通过比较 "m + n" 是否不超过100来确保符合题目要求。
    将题目写入工作表,并设置字体大小为20。

4. 生成减法题目:
    若 "r" 不大于0.5,则生成一个减法题目:
    随机生成两个介于1到99之间的数字 "m" 和 "n"。
    通过比较 "m - n" 是否大于0来确保符合题目要求。
    将题目写入工作表,并设置字体大小为20。

5. 设置标题:
    合并第一行的单元格,以容纳标题 "100以内的加减法训练"。
    将标题写入第一行第一列的单元格,并设置字体大小为22和水平居中对齐。

总体来说,该代码通过嵌套循环随机生成加法和减法题目,确保题目符合规定的要求,然后将题目和等式写入Excel工作表中,最后设置标题。这样可以生成一个简单的加法和减法练习工作表。

#代码如下
Sub drf()
    Set a = Worksheets(1)
    Range("a:f").ColumnWidth = 15
    For i = 2 To 17
        For j = 1 To 6
            Randomize
            r = Rnd()
            If r > 0.5 Then
                s = 0
                Do While s = 0
                    Randomize
                    n = Int(Rnd() * 99) + 1
                    Randomize
                    m = Int(Rnd() * 99) + 1
                    If m + n <= 100 Then
                        s = 1
                    End If
                    If s = 1 Then
                        Exit Do
                    End If
                Loop
                a.Cells(i, j) = m & "+" & n & "="
                a.Cells(i, j).Font.Size = 20
            Else
                      s = 0
                Do While s = 0
                    Randomize
                    n = Int(Rnd() * 99) + 1
                    Randomize
                    m = Int(Rnd() * 99) + 1
                    If m - n > 0 Then
                        s = 1
                    End If
                    If s = 1 Then
                        Exit Do
                    End If
                Loop
                 a.Cells(i, j) = m & "-" & n & "="
                 a.Cells(i, j).Font.Size = 20
            End If
        Next
    Next
    a.Range("a1:f1").Merge
    a.Cells(1, 1) = "100以内的加减法训练"
    a.Cells(1, 1).Font.Size = 22
    a.Cells(1, 1).HorizontalAlignment = xlCenter
End Sub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值