基本介绍
Do...Loop
是VBA中的一种循环语句,用于重复执行特定的代码块,直到满足特定条件为止。有几种不同的方式可以使用Do...Loop
,分别是Do While
、Do Until
、Do...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