使用随机生成的数组索引填充数组元素的范围

时间:2015-10-12 19:10:45

标签: arrays excel vba excel-vba range

我正在创建一个程序,它将每天/每个身体部位创建一个随机锻炼程序。

以下是我的代码,希望能够从100个练习列表中创建一系列腹部练习。创建数组后,将选择随机索引号。我想用这个元素填充abToday范围的四行。

Private Sub CommandButton1_Click()

Dim roll
roll = Int((7 - 1 + 1) * Rnd + 1)

If roll = 1 Then
    'Gets all available ab movements
    Dim abdominals() As Variant
    abdominals = Sheets("KEY").Range("A2" & Rows.CountIf("A:A", "Abdominals")).End(xlUp).Row

    'Creates today's ab routine
    Dim abToday As Range
    Set abToday = Range("A7:A22")
    RandomSample = Int((UBound(abdominals, 1) - LBound(abdominals, 1) + 1) * Rnd + 1)

End Sub

任何人都可以提供任何指示吗?

1 个答案:

答案 0 :(得分:0)

这是在黑暗中的一点点,因为它似乎没有遵循你的代码,但看看这样的东西是否会起作用:

Private Sub GetAbs()

  Dim ws As Worksheet
  Dim LastRow, row, i As Integer
  Dim abToday As Range

  Set abToday = Range("A7:A22")
  Set ws = Sheets("KEY")

  LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).row

  For i = 0 To 3
    row = Int(LastRow * Rnd + 1)
    Cells(abToday.row + i, abToday.Column).Value = ws.Cells(row, 1).Value
  Next i

End Sub

请记住,它不会进行欺骗检查,这意味着可以想象逻辑会不时地多次列出相同的练习。尽管如此,要克服这个问题应该不是什么大问题,但这取决于是否重要。