簡體   English   中英

用於在 Excel 中刷新 ODBC 數據的 VBA 觸發器 - Worksheet_Change 與 workbook_open

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM