当该工作簿中不存在指定的工作表名称时,在这些情况下会出现下标超出范围错误Worksheets
收藏。
我注意到您有两个打开的工作簿,指定为:
Workbooks.Open Filename:=SPathName & "\" & SFilename
Workbooks.Open Filename:=JPathName & "\" & JFilename
但是,您的两个工作表分配仅涉及ActiveWorkbook
.
错误的原因肯定是SheetName2
不存在于ActiveWorkbok
(由指定JFilename
)
尤其是在处理多本书或工作表时,最好避免使用激活/选择方法-- 否则您需要跟踪哪个工作簿/工作表/等。是“Active”,这会导致意大利面条式代码和大量不必要的调用.Activate
method.
I know that SheetName1
存在于JFilename
,我假设SheetName2
存在于工作簿中SFileName
.
相反,定义两个Workbook
变量:
Dim wb1 as Workbook
Dim wb2 as Workbook
分配结果Workbooks.Open
这些工作簿的方法:
Set wb2 = Workbooks.Open(Filename:=SPathName & "\" & SFilename)
Set wb1 = Workbooks.Open(Filename:=JPathName & "\" & JFilename)
Now, wb1
是“活动”工作簿,因此工作表分配:
Set wks1 = wb1.Worksheets(SheetName1)
后来为了Sheetname2
:
Set wks2 = wb2.Worksheets(Sheetname2)
否则,您的工作表名称或发送给此函数的字符串参数存在拼写错误。仔细检查/调试该值SheetName2
是正确的and它存在。