对象在尝试重命名工作表时,在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
希望有所帮助。