我目前有一个API
已加入我的excel
,从URL
下载股票价格。列A2:A194
是公司名称,B2:B194
是相应的股票价格。
我想创建一个macro
,每5分钟运行一次,获取新价格并将它们粘贴到相邻的列中。
这是我迄今为止所取得的成就:
[Sub GetPrice()
'
' GetPrice Macro
'
' Keyboard Shortcut: Ctrl+q
'
ActiveWorkbook.RefreshAll
ActiveCell.Offset(0, -1).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(-1, 0).Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=NOW()"
ActiveCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(1, 0).Range("A1").Select
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1").Select
Application.OnTime Now + TimeValue("00:05:00"), "GetPrice"
End Sub]
此宏从前一列而不是B2:B194
中提取数据。我该如何改变?
例如:在1小时结束时,我希望14列有数据:原始的2 + 12列,每5分钟获取一次。
答案 0 :(得分:1)
为什么它从前一栏中拉出来。这是因为您使用Offset而不是声明要特定使用的列。如果你知道它会是:
Sheets("Sheet1").Range("B2:B194")
然后只需编辑定义该部分的宏。
宏是了解代码中发生了什么的好方法,但我总是将它们编辑为更高效或更容易阅读。主要是因为很多宏依赖于用户不断点击和激活单元格,这对于某处插入值或要执行的函数不是必需的。你也可以很快看到后台发生的一切,看起来有问题。