你可以复制一张工作表,并保留对新表的引用吗?

是否有可能使用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:

 Function CopyAWorksheet(ws As Worksheet, Before As Worksheet) As Worksheet ws.Copy Before:=Before Set CopyAWorksheet = Worksheets(Before.Index - 1) End Function 

我可以添加一个After参数,并使BeforeAfter变种,以使其行事完全一样我想,但似乎我只是缺less已经内置到Excel VBA的东西。 如果有一些有趣的技术原因,这是不可能的,我也很想听到这些。

我正在使用Excel 2010。

首先也可能是最简单的select – 当你复印纸张时,新的复印件成为活动纸张,因此你可以这样做:

 oldws.Copy Before:=Sheets(1) set newws = Activesheet