这是相对简单的,但是它不起作用,我似乎找不到任何有关此操作的方法。
我的模块中有一个带有以下代码的子例程:
Set wkbGraph_Generator = ActiveWorkbook
然后在另一个模块中,我有了这个全局变量。
Public wkbCompiledDataTable As New Collection
然后在另一个模块中,我有一个子程序具有以下内容:
wkbCompiledDataTable.Add Workbooks.Open(FileName:=FilePath, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)
然后我要执行一个函数,这就是我遇到麻烦的地方:
Function RTFN_GetDataActual(wkbCompiledDataTable As Collection, _
wkbGraph_Generator As Workbook)
wkbCompiledDataTable(1).Sheets(1).Copy After:=wkbGraph_Generator.Sheets(Sheets.Count)
wkbGraph_Generator.Sheets(Sheets.Count).Name = TagArray(1)
End Function
我遇到错误运行时错误'9':下标超出范围
我不知道如何描述它……但是有时如果我一步步通过它却无法正常工作……我认为它在“ Sheets.Count”中,因为有时sheets.count = 3这是不对的。其他时候,sheets.count是正确的。我认为当工作在sheets.count上时,重点是放在错误的工作表上。好的,是的,我很确定这就是问题所在。该代码只是在该行上有一个错误...然后我单击了“ wkbGraph_Generator”以将其有效激活...并且该代码起作用了...我该如何解决呢?
答案 0 :(得分:0)
好吧。。。昨晚这很挣扎...基本上在发布问题时想出了我自己的答案。
更改:
wkbCompiledDataTable(1).Sheets(1).Copy After:=wkbGraph_Generator.Sheets(Sheets.Count)
收件人:
wkbCompiledDataTable(1).Sheets(1).Copy After:=wkbGraph_Generator.Sheets(wkbGraph_Generator.Sheets.Count)
PS:在线上到处都只显示“ Sheets.Count”,用于将工作表从一个工作簿复制到另一个工作簿...根据我发现的结果,看来这是行不通的。
答案 1 :(得分:0)
Sheets.Count
具有隐式ActiveWorkbook
。 明确-指定工作簿。 With
语句是执行此操作的好方法。请注意.
的所有实例之前的Sheets
,包括.Sheets.Count
:
Function RTFN_GetDataActual(wkbCompiledDataTable As Collection, _
wkbGraph_Generator As Workbook)
With wkbGraph_Generator
wkbCompiledDataTable(1).Sheets(1).Copy After:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = TagArray(1)
End With
End Function