Excel宏工作簿_之前关闭特定工作簿

时间:2017-05-06 18:47:31

标签: excel vba excel-vba

我有两个工作簿,一个是我们在(工作簿A)中输入数据,另一个是我们用于计算(工作簿B)。

当工作簿B关闭时,运行以下代码,以重置它......

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”。

如何更改宏以在Workbook B上运行上述代码,无论其他工作簿是打开还是在前台?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您没有提供该范围的工作表。也许,

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

您必须激活工作表才能。在其上选择一个单元格,但Application.Goto可以选择一个指定的单元格。我已经调整了上面的代码,使用了一个worbook-scope定义的名称,然后使用Application.Goto那个单元格。