Excel 关闭代码触发前的工作簿&x27;保存更改';促使

Excel 关闭代码触发前的工作簿&x27;保存更改';促使,excel,vba,Excel,Vba,我有一个表单,我想跟踪一些细节,所以我设置了一个程序,将我关心的内容记录在一个单独的文件中,然后保存并关闭跟踪文件,而不会打扰用户。它是从工作簿\u BeforeClose事件(以及其他一些地方)调用的,如下所示 Public Sub Workbook_BeforeClose(Cancel As Boolean) Call logFormState End Sub Sub logFormState() Application.ScreenUpdating = False On Er

我有一个表单,我想跟踪一些细节,所以我设置了一个程序,将我关心的内容记录在一个单独的文件中,然后保存并关闭跟踪文件,而不会打扰用户。它是从工作簿\u BeforeClose事件(以及其他一些地方)调用的,如下所示

Public Sub Workbook_BeforeClose(Cancel As Boolean)
    Call logFormState
End Sub


Sub logFormState()

Application.ScreenUpdating = False
On Error GoTo FileOpen
Workbooks.Open Filename:="Y:\Finance\Finance\Public\BUDGETS\My Junk\Budget Request Form Status.xlsx"
Dim emptyRow As Long
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(emptyRow, 1).Value = Date + Time
Cells(emptyRow, 2).Value = Environ("UserName")
Cells(emptyRow, 3).Value = ThisWorkbook.Name
Cells(emptyRow, 4).Value = ThisWorkbook.Path
Cells(emptyRow, 5).Value = ThisWorkbook.Worksheets("AdminInfo").Range("FormComplete")
Cells(emptyRow, 6).Value = ThisWorkbook.Worksheets("AdminInfo").Range("FormSubmitted")

ActiveWorkbook.Save
ActiveWorkbook.Close
ThisWorkbook.Activate
Application.ScreenUpdating = True
Exit Sub
FileOpen:
'record info somewhere else?
Application.ScreenUpdating = True
End Sub
问题是,这会导致excel询问用户是否要保存更改,即使用户没有更改任何内容。除了我的跟踪文件之外,我不明白为什么这会在任何地方进行更改。我已尝试删除“Application.ScreenUpdating”行以及“ThisWorkbook.Activate”行,但没有效果

让事情更复杂的是,我发现如果我保存、关闭(这会弹出保存更改提示)、取消保存更改提示(因此文件实际上不会关闭)、再次保存,然后再次关闭,它实际上会在没有提示的情况下关闭


希望这一切都有意义。如果我需要澄清任何事情,请让我知道!谢谢你的帮助

根据Guest关于测试ActiveWorkbook.Saved属性的建议,我能够解决我的问题(尽管原因仍然是个谜)。下面是所有感兴趣的人的完整代码

Public Sub Workbook_BeforeClose(Cancel As Boolean)
    If ActiveWorkbook.Saved Then
        Call logFormState
        ActiveWorkbook.Save
    Else
        Call logFormState
    End If
End Sub

感谢所有帮助过我的人

Application.EnableEvents=FalsApplication.EnableEvents=False过于繁重。我希望提示显示用户是否进行了合法的未保存更改。
Application.DisplayAlerts=False
将阻止用户收到通知。您可以这样测试:
如果ActiveWorkbook.Saved=False,则
ActiveWorkbook.Saved就是票证!谢谢客人!