如何在Excel中捕获实时数据

我有一个单元格(A1)链接到实时数据(= TICKER!Z12)。 我想在五分钟内捕捉所有的价格范围。 我的问题是我正在尝试使用Worksheet_Change方法,但它不会更新如果单元格(A1)制定时值更改。 它工作正常,如果我手动更改值。 但我需要捕获由公式生成的值,然后在每次值更改时复制并粘贴B列中的值。 这是我到目前为止。

Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.EnableEvents = False If Range("A1").value <> Range("B2").value Then Range("A1").Select Selection.Copy With ActiveSheet LastRow = .Cells(.rows.Count, "B").End(xlUp).row + 1 .Cells(LastRow, 2).Select Selection.PasteSpecial Paste:=xlPasteValues End With End If Application.CutCopyMode = False Application.EnableEvents = True End Sub 

尝试使用Worksheet_Calculate事件。

另外,我不确定你想要比较A1和B2。 逻辑规定您应该将其与B列中的最后一个单元格进行比较。

此外,使用Activesheet不是一个好主意,因为重新计算可能发生在任何其他工作表上,并且您不想在随机工作表上写入值。

还有一件事:不要在macros中使用复制粘贴。 只要使.Value = .Value。

 Private Sub Worksheet_Calculate() Dim lngLastRow As Long On Error Goto SkipAllThis Application.ScreenUpdating = False Application.EnableEvents = False With Worksheets("Source") 'or whatever sheet has your code and stores your values lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row If .Range("A1").Value <> .Cells(lngLastRow, 2).Value Then .Cells(lngLastRow + 1, 2).Value = Range("a1").Value End If End With SkipAllThis: Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

DRS,

实现睡眠function如下:

声明和调用睡眠API

然后,捕捉你的价值。 只要注意API是以毫秒为单位。

G。