所以我想生成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次后停止生成。我认为“执行直到”方法会起作用,但不确定如何执行。
因此,在使用它之后,我想出了如何使下一个单元格生成随机数。我现在要在列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 if语句。
然后希望在十轮之后我可以打印一个消息框,说明获胜者。
好吧,我完成了想要制作的程序。我可能已经说过我之前尝试做的事情,但是无论如何我都会重复。我正在努力制作一款名为“战争”的纸牌游戏。电子表格必须打印数字,当用户得分达到10时,他将获胜,而电子表格将停止打印数字。我要感谢您的帮助。您提供给我的随机数生成器是分配作业的良好开端。教授给了我19/20。
最佳答案
当您知道开始循环之前需要多少循环时,通常最容易使用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