对象在尝试重命名工作表时,在Excel VBA中发生错误

我试图复制一个特定的表格,并将其重命名为final。 代码如下:

Sub CreateSheet() Worksheets("Key metrics").Copy(Before:=Worksheets(1)).Name = "Final" End Sub 

该程序执行,直到复制与内容的工作表,但然后抛出错误,并不重新命名我的新工作表最终。

提前致谢。

问题在于你正在执行的嵌套。 Copy不返回表单对象,因此你的错误。

尝试这个:

 Sub CreateSheet() with Excel.thisworkbook .Worksheets("Key metrics").Copy Before:=.Worksheets(1) .activesheet.Name = "Final" end with End Sub 

这是一个质量保证,证实了这一点:
为什么Worksheet.Copy不返回对创build的新工作簿的引用

如果这将是一个小型自包含的helper程序,您可以使用工作表返回types将其设置为一个函数:

 Sub tst() Dim mySht As Excel.Worksheet Set mySht = crtSheet("foobar", "barfoo") '<<used via this End Sub Function crtSheet(ByVal tgtSheet As String, ByVal newName As String) As Excel.Worksheet Dim s As Excel.Worksheet With Excel.ThisWorkbook .Worksheets(tgtSheet).Copy Before:=.Worksheets(1) Set s = .ActiveSheet s.Name = newName End With Set crtSheet = s End Function 
 Sub CreateSheet() Dim WS As Worksheet Worksheets("Key metrics").Copy Before:=Worksheets(1) Set WS = ActiveSheet WS.Name = "Final" End Sub 

希望有所帮助。