Workbook_Before保存每个活动工作簿ActiveWorkbook

时间:2016-12-15 15:39:18

标签: excel vba excel-vba

由于我经常遇到问题,因此滴答在设置中消失:在保存之前计算。 (我不知道确切的用语,因为我的办公室版本是德语版)。

这就是为什么我尝试使用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

我把它放入&#34; Thisworkbook&#34;。但我希望这个代码能够在我使用的每个工作簿中运行(至少所有这些都允许使用宏)。

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

1 个答案:

答案 0 :(得分:2)

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

在您的PERSONAL工作簿中右键单击并插入一个类模块(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