我有一个excel工作表,用作访问数据库前端。当用户更改单元格中的数据时,它将运行Worksheet_changed事件以运行更新访问数据库的代码。
然而 - 我还有一个刷新按钮,你猜对了,刷新了电子表格。这也会导致workheet_changed事件运行,这有时会导致程序错误。
Private Sub RefreshButton_Click()
Refreshbuttons
ActiveWorkbook.RefreshAll
End Sub
如何在按下刷新按钮时停止工作表更改事件的发生?我已经尝试了一个布尔标志,它会在按下刷新按钮时停止工作表更改事件的运行 - 但它会阻止它运行(我所做的例子)
Private Sub RefreshButton_Click()
Dim Flag as Boolean
Flag = True
Refreshbuttons
ActiveWorkbook.RefreshAll
Flag = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Flag = true then
Exit Sub
Else
[...] {Rest of code below here}
我被困 - 任何帮助都非常感谢!!!
谢谢,
探
修改 谢谢蒂姆!你指出我正确的方向。我结束了(下面的代码),它工作得很漂亮。我感谢大家的帮助!
Private Sub RefreshButton_Click()
For Each objConnection In ThisWorkbook.Connections
'Get current background-refresh value
bBackground = objConnection.OLEDBConnection.BackgroundQuery
'Temporarily disable background-refresh
objConnection.OLEDBConnection.BackgroundQuery = False
'Refresh this connection
objConnection.Refresh
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
Else
End If
'Set background-refresh value back to original value
objConnection.OLEDBConnection.BackgroundQuery = bBackground
Next
MsgBox "Refresh Complete"
End Sub
答案 0 :(得分:0)
将Flag标记为全局,如下所示。它应该工作。
Public Flag as Boolean
答案 1 :(得分:0)
所有办公应用程序都有内置函数来控制此行为。只需添加:
Application.EnableEvents = False
到RefreshButton_Click
事件的开头{。}}
Application.EnableEvents = True
到活动结束时。
答案 2 :(得分:0)
Private Sub RefreshButton_Click()
On Error Goto haveError
Refreshbuttons
Application.EnableEvents = False
ActiveWorkbook.RefreshAll
haveError:
Application.EnableEvents = True
End Sub