2017-08-01 230 views
0

我今天在工作簿中發現了一個問題。我在ThisWorkbook中保存了一個基本的Workbook_BeforeClose子集,該子集用於重置工作簿外觀,確保工作表隱藏並在下次使用Worksheet時將其清理乾淨。我不認爲代碼是相關的,但無論如何都包括在內以防萬一。Excel關閉打印預覽觸發器Workbook_BeforeClose

我的問題是,當我關閉打印預覽這段代碼被觸發(我用的斷點確認),並問我,如果我要救我的項目它關閉之前。當然,我可以取消並阻止文件關閉,但它仍然運行腳本的其餘部分。這種行爲看起來不正確,我不希望用戶感到困惑。有沒有人見過這個,或知道一個潛在的修復?

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim wshide As Worksheet 
    Dim wsa As Worksheet 
    Dim CurrWs As Worksheet 

    Set CurrWs = Sheets(ActiveSheet.Name) 

    For Each wsa In Worksheets 
     wsa.Activate 
     ActiveWindow.View = xlNormalView 
     wsa.Range("A1").Select 
    Next 

    For Each wshide In Sheets(Array("Data", "Tables", "Map")) 
     wshide.Visible = xlSheetHidden 
    Next 

    CurrWs.Activate 
End Sub 

感謝

回答

1

Workbook_BeforeClose不應該叫當剛剛閉幕打印預覽,它纔會被調用,如果通過關閉整個工作簿以及您關閉打印預覽。

您無法從另一個宏調用Workbook_BeforeClose,因此也不會觸發它。

可以觸發Workbook_BeforeClose的唯一方法是關閉工作簿。

+0

是的,這就是我對它的理解,這也是我困惑的原因。回過頭再看一遍,這是我自己對屏幕的誤讀。我以爲我點擊X來關閉打印預覽,但是,它是2013年的界面,我應該點擊後退箭頭<或Esc鍵關閉它。其實我正試圖關閉Excel。 –

+0

很高興我能幫到你。 – ChrisM