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