ExcelmacrosWorkbook_BeforeClose特定工作簿

我有两个工作簿,一个是我们input数据(工作簿A),另一个是计算工作簿(工作簿B)。

当工作簿Bclosures时运行下面的代码,重置它…

Private Sub Workbook_BeforeClose(Cancel As Boolean) Range("B2:B4,B6:B8,B10:B12,B14:B16,B18:B20,B22:B24,B26:B28,B30:B32").ClearContents Range("B2").Select ActiveWorkbook.Save End Sub 

问题是如果某人在工作簿B打开时退出Excel,但工作簿A处于前台,则会收到运行时错误“1004”。

如何更改macros以在工作簿B上运行上面的代码,而不pipe其他工作簿是打开还是在前台?

预先感谢您的任何帮助。

您没有提供任何指示范围的工作表。 也许,

 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) Cancel = False With ThisWorkbook.Worksheets("sheet1") .Range("B2:B4,B6:B8,B10:B12,B14:B16,B18:B20,B22:B24,B26:B28,B30:B32").ClearContents .Range("B2").Name = "openHere" Application.Goto Reference:="openHere" .Parent.Save End With End Sub 

您必须激活一个工作表,以便select一个单元格,但Application.Goto可以select一个命名的单元格。 我已经调整了上面的代码来使用一个工作范围定义的名称,然后Application.Goto该单元格。