2016-05-22 85 views
1

我在使用VBA代碼時遇到了一些麻煩。我有一些實時數據與彭博社相關聯,我希望每次單元格的值高於特定閾值時都會彈出一個窗口。要做到這一點,我需要找到一種方式來不斷地經營我的宏來檢查,如果我的條件被驗證..但我不知道該怎麼做..我目前的VBA代碼:使VBA宏自動運行/不斷

Private Sub Worksheet_Activate() 
Dim i As Long 
For i = 2 To 99 
    If Cells(i, 11).Value > 25000 Then 
     MsgBox "Last trade on " & Cells(i, 1).Value & " is higher than 25 000" 
    End If 
Next i 
End Sub 

如果你可以用這段代碼來幫助我,這會很棒!在此先感謝

+0

通過搜索'MS Excel的timer'你會發現這樣的事情http://stackoverflow.com/questions/2319683/vba-macro-on-timer-style-to-run-code-every- set-number-of-seconds-ie-120-secon – BitAccesser

+0

謝謝!我會試試 – user6366207

回答

1

你可以嘗試這樣的事情:

Private Sub Worksheet_Activate() 
    Dim i As Long 
    Do while (true) 
    For i = 2 To 99 
     If Cells(i, 11).Value > 25000 Then 
     MsgBox "Last trade on " & Cells(i, 1).Value & " is higher than 25 000" 
     End If 
    Next i 
    Application.Wait (Now + TimeValue("0:00:10")) 'wait 10 seconds 
    Loop 
End Sub 

編輯:讓它再出現,如果是相同的,使用的細胞(如10列飛)來存儲當前值和比較。

Private Sub Worksheet_Activate() 
    Dim i As Long 
    Do while (true) 
    For i = 2 To 99 
     If Cells(i, 11).Value > 25000 Then 
     If Cells(i, 11).Value <> Cells(i, 1).ValueThen 
      MsgBox "xxxxx" 
      Cells(i, 11).Value = Cells(i, 1).Value 'setting value 
     End If 
     End If 
    Next i 
    Application.Wait (Now + TimeValue("0:00:10")) 'wait 10 seconds 
    Loop 
End Sub 
+0

謝謝,明天當市場開放時我會試試:) – user6366207

+0

不用擔心,讓我知道它是否無效。 –

+0

我只是試了一下,但循環使Excel始終堵塞,我不再可以單擊一個單元格..所以我用Application.OnTime替換Application.Wait,並刪除了「Do While .. Loop」它完美地工作。再次感謝 ! :) – user6366207