所以我想生成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


如果您确实要使用RndRandomize,则可以这样操作

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

10-02 01:58
查看更多