![](/img/trans.png)
[英]Create and assign variables on Workbook_open, pass it to Worksheet_change
[英]VBA trigger for refreshing ODBC data in excel - Worksheet_Change vs workbook_open
我有一個到 odbc 的連接,它將數據帶到 excel 和我在宏中手動計算的其余數據我創建了一個宏,但我需要在單擊刷新按鈕時運行宏,我在 workbook_open() 中放置了 1 個宏,以便每當文件第一次打開時,我的宏被執行,但是當我單擊刷新按鈕時,只有來自 odbc 連接的數據得到更新我試圖通過將它放在 worksheet_changed() 事件中來調用我的宏,但它在這里不起作用是我試圖做的在 worksheet_change 事件中做
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Address = "$A$2" Or Target.Address = "$H$2" Then
Call MyMacro
End If
End Sub
這里 id MyMacro Sub MyMacro() Dim i As Integer Dim j As Integer j = 1 i = 2 Dim Counter As Integer Counter = 1
Do While Not IsEmpty(cells(i, 1).Value)
If cells(i, 5).Value >= 70 Then
cells(i, 6).Value = Counter
SLC = (Counter / 96) * 100
cells(i, 7).Value = SLC
Counter = Counter + 1
Else
cells(i, 6).Value = 0
End If
i = i + 1
Loop
End Sub
MyMacro 被調用並到達我更新此單元格的行
cells(i, 6).Value = Counter
but it calls the following event its like a cycle
Private Sub Worksheet_Change(ByVal Target As Range)
再次沒有值得到更新
這是我的 excel 表外觀的前例
TimeStamp CA CAAT SL Counter SLC
11/24/2014 2:15 24 0 100.00 1 10.42
11/24/2014 2:30 27 0 100.00 2 11.46
11/24/2014 2:45 22 0 100.00 0 12.50
11/24/2014 3:00 21 0 100.00 3 13.54
11/24/2014 3:15 15 0 100.00 0 14.58
11/24/2014 3:30 18 1 94.44 4 15.63
A:E 的范圍從我的 odbc 連接中獲取它的值當 SL 大於或等於 70 時,我在這里嘗試對 SL 計數器執行什么操作,我的計數器增加 1 提前感謝您的幫助
將您的私人潛艇更改為此
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Address = "$A$2" Or Target.Address = "$H$2" Then
Application.EnableEvents = False
Call MyMacro
Application.EnableEvents = True
End If
End Sub
您的MyMacro
sub 正在更改單元格值,因此再次觸發 Worksheet_Change 事件。 為了克服這個問題,您需要在調用宏之前關閉事件,然后再打開它們。
如果出於某種原因您確實需要在事件關閉時觸發事件,請使用Application.DoEvents
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.