如何在一张表中运行一个macros而不影响我打开的其他电子表格

我在一个不断运行的工作簿中运行一个macros。 当我打开另一个工作簿的时候,这个macros就会崩溃,并且会掉到范围之外。 我怎样才能locking该特定工作表上的macros? macros码是:

Sub startTimer() On Error Resume Next ActiveSheet.Unprotect Password:="***" Application.OnTime Now + TimeValue("00:00:01"), "Increment_count", Schedule:=False Application.OnTime Now + TimeValue("00:00:01"), "Increment_count" End Sub Sub Increment_count() If ActiveCell.Column = 9 Then ActiveCell.Value = ActiveCell + 1 startTimer Else MsgBox "Timer works only in I column", vbCritical, "Error" End If End Sub Sub stopTimer() On Error Resume Next Application.OnTime Now + TimeValue("00:00:01"), "Increment_count", Schedule:=False ActiveSheet.Protect Password:="***" ActiveWorkbook.Save End Sub 

这个答案是Shai Rado评论的延伸

ActivesheetActivesheet引用当前关注的工作表。 更好的方法是命名感兴趣的工作表,并通过名称获取该工作表。

 Dim correctSheet as Worksheet correctSheet = Worksheets("SheetName") correctSheet.Unprotect ' etc.. 

看看这个问题: 声明variables工作簿/工作表vba

这个参考也许是有用的http://www.excel-easy.com/vba/workbook-worksheet-object.html