随机化一个数字,然后在工作簿上显示相应的单元格

时间:2016-07-12 12:09:58

标签: excel vba excel-vba

下午好。我现在尝试了多种方法来实现这一目标。本质上,代码在我运行时起作用,但是,当工作簿打开时,它似乎不会这样做。有没有更简单的方法来实现这一目标?

基本上在第5-28行中有随机字符串,我希望每次打开工作簿时,单元格G4都会显示一个随机字符串。

我想我可能会走正确的路线,但是我错过了什么明显的东西吗?

非常感谢

Private Sub Workbook_Open()
    wbOpenEventRun = True    
    Dim MyValue
    MyValue = Int((28 * Rnd) + 5)
    Sheets("Hints & Tips").Range("G4") = Cells(MyValue, 7)
End Sub

3 个答案:

答案 0 :(得分:1)

试试这个:

Private Sub Workbook_Open()
    Randomize    'As Suggested by John Coleman
    wbOpenEventRun = True    
    Dim ws As Worksheet
    Set ws = Sheets("Hints & Tips")
    ws.Range("G4").Value = ws.Range("G" & Int((23 * Rnd()) + 5)).Value
End Sub

答案 1 :(得分:1)

您试图将某些内容分配给Range对象,而不是单元格的值。读取源单元格的Value属性并将其写入目标的Value属性:

Sheets("Hints & Tips").Range("G4").Value = Sheets("SourceSheet").Cells(MyValue, 7).Value

最好还指定哪个工作表是数据源,或者它取决于宏运行时哪个工作表处于活动状态 - 除非这是您想要的行为。

答案 2 :(得分:1)

您可以使用Application.WorksheetFunction.RandBetween()

Private Sub Workbook_Open()
    wbOpenEventRun = True    
    Dim MyValue
    MyValue = Application.WorksheetFunction.RandBetween(5,28)
    Sheets("Hints & Tips").Range("G4") = Cells(MyValue, 7)
End Sub