每分钟自动运行一个宏

时间:2017-10-23 09:36:18

标签: excel vba excel-vba

早上好 基本上我是从网上导入索引数据(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

enter image description here

我的问题是,我希望每次刷新数据时都运行此宏。我最初使用的是

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(“本文档”)> Sheet2(Sheet2)

1 个答案:

答案 0 :(得分:0)

请尝试以下范围B1:B8:

Private Sub Worksheet_Change(ByVal Target As Range) 
  If Not Intersect(Target, Sheet1.Range("B1:B8")) Is Nothing Then
        Application.EnableEvents = False
        Call Historical_Index
        Application.EnableEvents = True
    End If
End Sub

或者如果您只想查看B2

Private Sub Worksheet_Change(ByVal Target As Range) 
  If Not Intersect(Target, Sheet1.Range("B2")) Is Nothing Then
        Application.EnableEvents = False
        Call Historical_Index
        Application.EnableEvents = True
    End If
End Sub