Excel关闭打印预览会触发Workbook_BeforeClose

时间:2017-08-01 16:37:13

标签: excel vba excel-vba

今天我的工作簿发现了一个问题。我有一个基本的Workbook_BeforeClose子保存在ThisWorkbook中,用于重置工作簿外观,确保工作簿被隐藏并使其清理,以便下次用户与工作表交互。我不认为代码是相关的,但无论如何都包括在内以防万一。

我的问题是当我关闭打印预览时,会触发此代码(我用断点确认)并且它询问我是否要保存我的项目之前它关闭它。当然,我可以点击取消并阻止文件关闭,但它仍然运行脚本的其余部分。这种行为似乎不对,我不希望用户对此感到困惑。有没有人见过这个,或者知道一个潜在的解决方案?

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 个答案:

答案 0 :(得分:1)

当关闭“打印预览”时,不应该调用Workbook_BeforeClose,只有在关闭整个工作簿的情况下关闭“打印预览”时才会调用它。

您无法从另一个宏调用Workbook_BeforeClose,因此也不会触发它。

可以触发Workbook_BeforeClose的唯一方法是关闭工作簿。