我在一个工作表(internal.xls)中将宏定义为
Public Sub sheet2test()
Workbooks.Open Filename:="external.xls"
Windows("external.xls").Activate
Sheets("Sheet3").Activate
Range("A5").Value = 5
End Sub
运行此代码,打开external.xls,并激活其工作表3.但是,Value of 5放在internal.xls而不是external.xls中。如何确保对其他工作表进行更改?
答案 0 :(得分:7)
我宁愿使用:
dim wb as workbook, sh as worksheet
set wb = workbooks.open("thatWorkbook.xls")
'Now you have a proper reference to the newly opened workbook !
set sh = wb.sheets("sheet3")
sh.range("a1") = "hello world"
正如其他人所说,各种Activate
指令比这里的用处更不方便。
答案 1 :(得分:6)
您无需执行所有此操作。它只是导致屏幕闪烁和处理延迟。
Public Sub sheet2test()
Workbooks.Open Filename:="external.xls"
Workbooks("external.xls").Sheets("Sheet3").Range("A5").Value = 5
End Sub
答案 2 :(得分:4)
答案是肯定的。
尝试使用以下代码对external.xls进行更改:
Public Sub sheet2test()
Workbooks.Open Filename:="external.xls"
Workbooks("external.xls").Activate
ActiveWorkbook.Sheets("Sheet3").Activate
Range("A5").Value = 5
End Sub
我在第4行添加了ActiveWorkbook.
。
必须添加此项以在当前活动的工作簿(external.xls)中进行更改,而不是包含和执行宏的工作簿 (internal.xls)