今天,我正在尝试使用“ for”运行基本循环。我想运行一个循环,直到在MsgBox中获得26至28之间的20个随机数。
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个数字。
欢迎任何建议!谢谢
答案 0 :(得分:2)
将随机数更改为小于3的数字,然后加26。
Rnd()返回[0,1)之间的数字,将其乘以28永远不会得到28。并且经常会导致数字低于28,由于if块,在输出中会避免该数字。>
f = (Rnd() * 3)
将给出一个介于[0,3)之间的随机数。
f = ((Rnd() * 3) + 26)
将给出[26,29)之间的随机数。
答案 1 :(得分:0)
您正在寻找的是Do-Loop Until
或Do While-Loop
循环。这种循环一直运行到满足条件为止。在您的情况下,该条件是“打印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