所以我想在1-13之间生成随机数。我有一个随机数生成单元格A1,但我想偏移一行,在单元格A2中放一个随机数,依此类推。
到目前为止,这是我的工作:
Sub randomnumb()
Dim random_number As Integer
Randomize
random_number = Int(13 * Rnd) + 1
Cells(1, 1) = random_number
End Sub
能够做到这一点。我希望随机数在10次后停止生成。我认为“Do Until”方法可行但不确定如何操作。
所以在玩完之后我想出了如何让下一个单元生成一个随机数。我现在想要在列B和C生成从单元格B2和C2开始的随机数的位置。到目前为止,这是我的工作:
Sub randomnumb()
Dim IntCardOne As Integer
Randomize
IntCardOne = Int(13 * Rnd) + 1
ActiveCell.Value = IntCardOne
ActiveCell.Offset(1, 0).Select
End Sub
好。所以到目前为止我已经做到了这一点。
Sub test()
Dim IntHand1 As Integer
Dim IntHand2 As Integer
Randomize
For IntHand1 = 1 To 10
Cells(IntHand1, 2) = Int(13 * Rnd) + 1
Next
Randomize
For IntHand2 = 1 To 10
Cells(IntHand2, 3) = Int(13 * Rnd) + 1
Next IntHand2
End Sub
最终目标是尝试从纸牌游戏中制作一款名为“战争”的游戏。 当然,它们很快就会产生。是否有停止功能或方法来阻止程序在最后运行代码?我还希望将所有内容都按行排列,我可以为每列添加标题。然后我想尝试输入一个记录分数的If then语句。
然后希望在十轮之后我可以打印一个说明获胜者的消息框。
好的,我完成了我想要的程序。我可能已经说过我之前想做的事情,但无论如何我会重复一遍。我正在努力制作一款名为“战争”的纸牌游戏。电子表格必须打印数字,当用户达到10分时,他将获胜并且电子表格将停止打印数字。我想感谢你的帮助。你提供给我的随机数生成器是一个很好的开始。教授给了我19/20。
答案 0 :(得分:3)
当您在开始循环之前知道需要多少循环时,通常最容易使用For
循环。
Sub RandomNumber()
Dim i as Integer
For i = 1 to 10
Cells(i,1) = WorksheetFunction.Randbetween(1,13)
Next i
End Sub
如果您真的想使用Rnd
和Randomize
,就可以这样做
Sub RandomNumber()
Dim i as Integer
Randomize
For i = 1 to 10
Cells(i,1) = Int(13 * Rnd) + 1
Next i
End Sub
<强>更新强>
一次一个号码
Sub RandomNumber2()
Dim lastCell As Range
'do a ctrl+up from the bottom of column A
With ThisWorkbook.Worksheets("Sheet1")
Set lastCell = .Cells(.Rows.Count, 1).End(xlUp)
End With
'move one row down (except for when you have nothing in column A)
If lastCell.Value <> vbNullString Then
Set lastCell = lastCell.Offset(1, 0)
End If
'place random number in this cell
lastCell.Value = Application.WorksheetFunction.RandBetween(1, 13)
End Sub