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

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

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

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

非常感谢

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

尝试这个:

 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 

你可以使用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 

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

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

最好还要指定哪个工作表是数据的来源,还是取决于哪个工作表在macros运行时处于活动状态 – 除非这是您想要的行为。