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 

我把这个写进“这本书”。 但是我希望这个代码能够在我工作的每个工作簿中运行(至less所有这些允许使用macros)。

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

我想你需要使用Excel应用程序事件而不是工作簿事件来实现这一点,比如在这个例子中

在您的个人工作簿中,右键单击并插入一个Class Module(Class 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启动时会自动打开PERSONAL工作簿):

 Dim myobject As New Class1 Private Sub Workbook_Open() Set myobject = Application End Sub