一个工作簿具有奇怪的访问另一个工作簿的模块

非常奇怪的事件。 我在一个工作簿下面的代码。 然后在一个单独的工作簿中,当我注意到下面的代码被调用时,我正在debugging代码?!?! 代码驻留在第一本书的本书模块中,所以只能包含在本书中。 第二本书甚至“看”它怎么样?

 Private Sub Workbook_SheetCalculate(ByVal Sh As Object) If Sh.Name = "Checks" Then If Abs(Sh.Range("R25").Value) > 1 Then ActiveSheet.Tab.Color = RGB(255, 10, 10) Else ActiveSheet.Tab.ColorIndex = xlColorIndexNone End If End If End Sub 

编辑:在第二本书中的代码驻留在一个模块中:

 Sub UpdateWorkbook() ActiveWorkbook.ActiveSheet.Select ActiveWorkbook.ActiveSheet.Copy After:=Sheets(1) End Sub 

当您计算一个Excel工作簿时,我相信它会重新计算所有打开的工作簿 – 因为您的模块在重新计算时运行,所以不会从正在运行的工作簿中打开,因为带有代码的工作簿实际上会自行重新计算任何工作簿都会重新计算。

解决方法是在不使用时保持工作簿closures,或者创build一个通用的If语句循环,检查活动工作簿是否是您希望代码运行的工作簿。