2017-09-13 59 views
0

解決如何檢查工作簿中停用事件關閉

有沒有什麼辦法來檢查,如果工作簿被關閉時,該代碼是在workbook_deactivate程序?所以我可以通知不同的消息給用戶,取決於他們是否正在離開另一個工作簿或他們正在關閉文件。像以下

Private Sub Workbook_Deactivate() 

if thisworkbook.closing then 
    msgbox "message1" 
else 
    msgbox "message2" 
end if 

End Sub 

我已經在網上搜索,但沒有解決方案。 所以任何幫助,將不勝感激

SOLUTION

我已經想到了一個絕招。我將Z1000中的值1(如果可用)放入before_close事件中並停用,我將檢查Z1000的值。而已。

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Range("Z1000").Value = 1 'wherever is avaliable 
    Me.Saved = True 
End Sub 

Private Sub Workbook_Deactivate() 
    If Range("Z1000").Value = 1 Then 
     MsgBox "quitting" 
    Else 
     MsgBox "deactivating" 
    End If 
End Sub 
+0

有一個'Workbook_Close'事件,但不幸的是心不是在Workbook_BeforeClose'事件VBA或'Workbook.Closing'屬性。如果我沒有弄錯,'BeforeClose'事件暴露在C#中,所以可能有辦法通過VBA獲取事件。 –

+0

@BrandonBarney你確定嗎? https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-beforeclose-event-excel ...也許我錯過了一些東西 – GibralterTop

+1

@GibralterTop你是對的。有一個事件。當我最後需要它時,我可以發誓它不在那裏。我的錯! –

回答

1

則可以檢測到使用BeforeClose事件

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    ' set Cancel to true to prevent it from closing 
End Sub 
+1

這是用戶窗體,而不是工作簿。 –

+1

@brandon - 好。修復。 – braX

+0

好吧,在excel中有一個before_close事件,但我無法使用它。因爲我想在停用中捕捉關閉事件,所以當我關閉文件時,只有一個事件會被解僱。否則before_close和deactivate都會觸發。我只想停用火,但在那我想趕上,如果文件關閉 – ExcelinEfendisi

-4

您可以檢查此代碼

ThisWorkbook.Close True 
+0

這將關閉工作簿,而不是檢查它是否關閉。 – braX

+0

如果你不知道答案,請不要補足。 – ExcelinEfendisi

相關問題