你好,我作業的一位副總裁制作了一個包含以下宏的作業簿。出于某種原因,在我打開檔案并自行關閉后,檔案會不時重新打開。這是因為作業簿中的計時器設定為重置其關閉程序嗎?我對 VBA 還不是很精通,所以這可能與 Sub Reset 所做的事情還差得遠。請注意,這顯然只發生在我身上而不是其他任何人身上,我們不知道為什么。我僅有的 VBA 經驗就像制作不會作為惡作劇關閉的作業簿或制作時間戳或顏色計數公式。
Dim xTime As String
Dim xWB As Workbook
Private Sub Workbook_Open()
'Updated by Extendoffice 2019/1/20
On Error Resume Next
xTime = "00:30:00"
Set xWB = ActiveWorkbook
If xTime = "" Then Exit Sub
Reset
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
If xTime = "00:30:00" Then Exit Sub
Reset
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If xTime = "" Then Exit Sub
Reset
End Sub
Sub Reset()
Static xCloseTime
If xCloseTime <> 0 Then
ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False
End If
xCloseTime = Now TimeValue(xTime)
ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True
End Sub
uj5u.com熱心網友回復:
計時器是一個異步行程,因此它將繼續在后臺運行,您可以在關閉作業簿時將其重置。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Reset
End Sub
uj5u.com熱心網友回復:
Application.OnTime呼叫SaveWork1附加到它 的作業簿時正在重新打開作業簿。Static xCloseTime正在存盤SaveWork1計劃運行的時間。正在存盤時間,以便Application.OnTime可以取消事件。
我相信你是唯一受到影響的人,因為你是唯一一個涉足 VBA 的人。VBA 錯誤可能會導致靜態變數丟失其值。改期Static xCloseTime的時候。SaveWork1
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/429226.html
