我正在尝试复制特定工作表并将其重命名为final。代码如下:
Sub CreateSheet()
Worksheets("Key metrics").Copy(Before:=Worksheets(1)).Name = "Final"
End Sub
程序执行直到复制带有内容的工作表,但然后它会抛出错误并且不会将我的新工作表重命名为最终工作。
提前感谢。
答案 0 :(得分:2)
问题与您正在进行的嵌套有关。 Copy
不返回工作表对象,因此您的错误。
试试这个:
Sub CreateSheet()
with Excel.thisworkbook
.Worksheets("Key metrics").Copy Before:=.Worksheets(1)
.activesheet.Name = "Final"
end with
End Sub
这是一个证实这一点的质量保证:
Why does Worksheet.Copy not return a reference to the new workbook created
如果这是一个小型的自包含helper
例程,你可以使它成为一个带有工作表返回类型的函数:
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
答案 1 :(得分:0)
Sub CreateSheet()
Dim WS As Worksheet
Worksheets("Key metrics").Copy Before:=Worksheets(1)
Set WS = ActiveSheet
WS.Name = "Final"
End Sub
希望有所帮助。