VBA 运行循环直到MsgBox中有X个例子
VBA Run Loop until have X examples in MsgBox
今天我正在尝试 运行 使用 "for" 的基本循环。我想 运行 一个循环,直到我在 MsgBox 中得到 20 个介于 26 - 28 之间的随机数。
Sub C7()
Dim b As Integer
Dim f As Single
Dim ret As String
For b = 1 To 20
f = Rnd() * 28
If f >= 26 And f <= 28 Then
ret = ret & Str(f)
End If
Next b
MsgBox ret
End Sub
下面的代码 运行 循环 20 次并给出 26 - 28 之间的所有值(通常不超过 3)。我需要的是一个代码,它将 运行 循环 X 次,直到它给我 26 - 27 之间的 20 个数字。
欢迎大家提出建议!谢谢
您正在寻找的是 Do-Loop Until
或 Do While-Loop
循环。这种循环运行s,直到满足一个条件。在您的情况下,该条件将是“打印了 20 条消息”。
Do While-Loop
循环在开始时检查条件,因此如果条件一开始是 False
,则循环不会 运行。
Do-Loop Until
循环检查最后的条件,因此循环将 运行 至少一次。
您之前的 For
循环之后的示例代码:
Sub C7()
Dim b As Integer
Dim f As Single
Dim ret As String
dim count as Integer: count = 0
Do
f = Rnd() * 28
If f >= 26 And f <= 28 Then
ret = ret & Str(f)
count = count + 1
End If
Loop until count = 20
MsgBox ret
End Sub
更改随机化以给出小于 3 的数字,然后添加 26。
Rnd() returns [0, 1] 之间的数字,将其乘以 28 永远不会得到 28。而且经常会得到低于 28 的数字,这在输出中被避免了,因为你的 if 块。
f = (Rnd() * 3)
将给出 [0, 3] 之间的随机数。
f = ((Rnd() * 3) + 26)
将给出 [26, 29] 之间的随机数。
今天我正在尝试 运行 使用 "for" 的基本循环。我想 运行 一个循环,直到我在 MsgBox 中得到 20 个介于 26 - 28 之间的随机数。
Sub C7()
Dim b As Integer
Dim f As Single
Dim ret As String
For b = 1 To 20
f = Rnd() * 28
If f >= 26 And f <= 28 Then
ret = ret & Str(f)
End If
Next b
MsgBox ret
End Sub
下面的代码 运行 循环 20 次并给出 26 - 28 之间的所有值(通常不超过 3)。我需要的是一个代码,它将 运行 循环 X 次,直到它给我 26 - 27 之间的 20 个数字。
欢迎大家提出建议!谢谢
您正在寻找的是 Do-Loop Until
或 Do While-Loop
循环。这种循环运行s,直到满足一个条件。在您的情况下,该条件将是“打印了 20 条消息”。
Do While-Loop
循环在开始时检查条件,因此如果条件一开始是 False
,则循环不会 运行。
Do-Loop Until
循环检查最后的条件,因此循环将 运行 至少一次。
您之前的 For
循环之后的示例代码:
Sub C7()
Dim b As Integer
Dim f As Single
Dim ret As String
dim count as Integer: count = 0
Do
f = Rnd() * 28
If f >= 26 And f <= 28 Then
ret = ret & Str(f)
count = count + 1
End If
Loop until count = 20
MsgBox ret
End Sub
更改随机化以给出小于 3 的数字,然后添加 26。
Rnd() returns [0, 1] 之间的数字,将其乘以 28 永远不会得到 28。而且经常会得到低于 28 的数字,这在输出中被避免了,因为你的 if 块。
f = (Rnd() * 3)
将给出 [0, 3] 之间的随机数。
f = ((Rnd() * 3) + 26)
将给出 [26, 29] 之间的随机数。