首先我要说的是,我之前没有使用 Excel 中的 (ActiveX) 按钮的经验,我了解 excel 的使用方法,但从未使用过那么多 VBA。我对学习非常开放,所以任何朝着正确方向的推动都会很棒!
我正在编写一个 Excel 工作簿,它可以模拟我们正在玩的游戏的股票市场。为了达到喜剧效果,这些值不会按预期变化,而是使用随机数进行修改。我有一个这些随机数的列表,并且希望有一个按钮,按下该按钮后会查找“Delta”列中最底部的空单元格,并粘贴随机数列表中的值。 (见图)
表格示例
对于本工作簿的另一部分,我使用了函数:OFFSET(C3,COUNTA(C3:C48)-1,0) 来查找“Delta”列中最底部的填充单元格。也许这可以重复使用?
为了测试该按钮,我尝试创建一个仅适用于一个单元格的更简单的版本。
Private Sub CommandButton1_Click()
If InStr(1, CommandButton1.Caption, "OFF") Then
Range("C5").Value = ""
Else
Range("C5").Value = Application.WorksheetFunction.Index(Range("Table3[Delta]"), Application.WorksheetFunction.RandBetween(1, Application.WorksheetFunction.CountA(Range("Table3[Delta]"))))
End If
End Sub
然而,这继续给我“1004”错误消息。
以下是如何从列表对象/表列中获取随机值的示例:
Dim rng As Range
'reference the source range with the numbers
Set rng = ThisWorkbook.Worksheets("Random") _
.ListObjects("List1").ListColumns("Nums").DataBodyRange
'pick a random number
Debug.Print rng.Cells(Application.RandBetween(1, rng.Cells.Count)).Value