2016-12-15 50 views
1

由于我经常遇到问题,该设置在设置中消失:保存前计算。 (我不知道我的办公室版本是德文的确切词语)。Workbook_Before保存每个活动工作簿ActiveWorkbook

这就是为什么我尝试使用VBA来解决问题。我在Excel文件中使用了以下代码:

Option Explicit 

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ 
    Cancel As Boolean) 

If Application.CalculateBeforeSave = False Then 
    If MsgBox("Caution! Should >calculatebeforesave< be activated?", vbYesNo) = vbYes Then 
     Application.CalculateBeforeSave = True 
    Else 
    End If 
Else 
End If 

End Sub 

我把这个放到了“Thisworkbook”中。但我希望这些代码能够在我工作的每个工作簿中运行(至少所有这些都允许使用宏)。

我的建议是编写ActiveWorkbook_BeforeSave ...而不是Workbook_BeforeSave,然后将代码放在PERSONAL宏文件的模块中。但这不起作用。

+1

所有你需要的是应用程序级事件处理程序。 http://www.cpearson.com/excel/AppEvent.aspx – cyboashu

回答

2

我认为你需要使用Excel应用程序事件,而不是工作簿事件来实现这一目标,如在此example

在你的个人工作簿中单击鼠标右键,然后插入AA类模块(1级)

下面加入类似的东西,以第1类:

Public WithEvents appevent As Application 

Private Sub appevent_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean) 
'Add what you would like to happen before a workbook closes 

End Sub 

下一页开放ThisWorksheet并沿着这些线路添加代码(我认为个人工作簿自动打开Excel启动时):

​​
+1

当Excel启动时,Personal.xls/xlsb应该会自动打开,只要将它保存在XLSTART文件夹中:) –

相关问题