我有两个工作簿,一个是我们在(工作簿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上运行上述代码,无论其他工作簿是打开还是在前台?
提前感谢您的帮助。
答案 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那个单元格。