你怎么能在一张纸上运行一个macros,而不会对你打开的其他电子表格产生影响

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

使用excel vba时的经验法则,不要使用ActiveWorkbook / ActiveSheet / Selectionvariables。 确保这些都明确说明,例如。

option explicit sub myRoutine() Dim ws as Worksheet Set ws = ThisWorkbook.Sheets('SheetName') End Sub 

ActiveSheet和select将使用当前正在使用的工作表,以及当前选中的单元格。

我猜测你logging了一个macros,在这种情况下按下Alt + F11并转到当前的工作簿,并在项目浏览器中findModules。 您可能需要修改代码才能不引用活动实例。

您需要明确指出您正在使用的工作簿/工作表……您的macros正在渗入其他工作表,因为它正在运行在那个时刻的焦点上。 使用像thisWorkbook或Worksheet(“myname”)这样的语句明确地引用哪个表/书应该被编辑。