4
是否可以使用VBA複製工作表並保存對其的引用?我知道我可以做以下工作,以保持對新工作表的引用,但我必須跟蹤索引,並且似乎應該已經有內置的東西可以做到。您可以複製工作表並保留對新工作表的引用嗎?
Dim newws as Worksheet
Dim oldws as Worksheet
' set oldws to whatever I need, then
oldws.Copy Before:=Worksheets(1)
Set newws = Worksheets(1)
但是這純粹是清潔,如果這樣的事情是可利用的,像它的Worksheets.Add
' You can do this
Set newws = Worksheets.Add
' But definitely not this, because Sheets.Copy doesn't return anything.
Set newws = oldws.Copy Before:=1
我想我可以寫我自己的函數:
Function CopyAWorksheet(ws As Worksheet, Before As Worksheet) As Worksheet
ws.Copy Before:=Before
Set CopyAWorksheet = Worksheets(Before.Index - 1)
End Function
我可以添加一個After
參數,並使Before
和After
變體都能像我想要的那樣動作,但似乎我只是m發佈已經內置到Excel VBA中的東西。如果有一些有趣的技術原因,這是不可能的,我也很想聽到這些。
我使用Excel 2010中
當我做那我得到'運行時錯誤424:對象需要.'這是否適合你? –
我已經添加了第一個可能的解決方案,讓我檢查一下可選代碼是否適用於我,因爲我不經過檢查就手寫它。 –
我不認爲第二種方法... [從文檔](http://msdn.microsoft.com/en-us/library/office/ff835605.aspx),它看起來不像'ws .Copy'返回一個值,所以你會把'newws'設置爲空。如果你可以驗證第二種方法**可以工作,或者將它從你的答案中拿出來,我會以ActiveSheet的方式接受你的答案,這比我做得更好。 –