【发布时间】:2017-10-23 09:36:17
【问题描述】:
早上好 基本上我是从网络 (abcbourse.com) 导入索引数据,并让它每分钟刷新一次。
我创建了一个宏来记录每个索引的历史值(从屏幕截图中看到的 CAC40 开始,每分钟都会在 E 列上出现新值(每次自动刷新数据时) 这是我的宏,运行良好(参见屏幕截图的 E 列):
Sub Historical_Index()
Dim LastLRow As Integer, CurrentIndexValue As Single
LastRow = Range("E" & Rows.Count).End(xlUp).Row
CurrentIndexValue = Range("B1")
Do
If Not IsEmpty(CurrentIndexValue) = True Then
Cells(LastRow + 1, 5).Value = CurrentIndexValue
Exit Do
End If
Loop
End Sub
我的问题是,我希望每次刷新数据时都运行这个宏。我最初使用了一个
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
Application.EnableEvents = False
Call Historical_Index
Application.EnableEvents = True
End If
End Sub
这确实是在调用我的宏,但前提是我手动更改 B2。如果我等待数据自动刷新,则不会调用我的宏(即使数据已更改)。
我想知道如何才能使这个过程自动化,我需要你的帮助。
提前致谢
ps:不知道有没有关系,但是我的宏保存在VBAProject(“this document”) > Sheet2(Sheet2)
【问题讨论】:
-
QueryTable有一个AfterRefresh事件,记录在here - 您可以创建一个类来捕获该事件并使用处理程序来触发您的宏。