[英]Copy sheet to another workbook
我在一個帶有以下代碼的模塊中有一個子例程:
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 是不正確的。 其他時候 sheet.count 是正確的。
我認為在執行 sheet.count 時重點是錯誤的工作表。
代碼在那一行上有一個錯誤,然后我點擊了“wkbGraph_Generator”,有效地激活了它,代碼工作了。
好吧......昨晚為此掙扎......在發布問題時基本上想出了我自己的答案。
改變:
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”,用於將工作表從一個工作簿復制到另一個......根據我的發現......它似乎永遠不會起作用。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.