工作表的名称正在重命名

时间:2013-01-10 12:28:43

标签: excel-vba excel-2007 vba excel

我使用下面的VBA代码在同一个工作簿中复制2个Excel工作表,其中包含将从一个工作表中提取的其他名称。

我有两张纸:输入和输出。这些工作表将使用输入表格的单元格C15中的名称进行复制。

Name = ThisWorkbook.Sheets("Input").Cells(15,3).Value
ThisWorkbook.Activate
Sheets("Input").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Name & " " & "Input"
Sheets("Output").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Name & " " & "Output"

此代码正常工作,直到复制输入表。但它也重命名输出表,这导致最后一行但是一行错误,因为工作表名称输出被替换为单元格值C15。任何人都可以帮我这个......

2 个答案:

答案 0 :(得分:1)

我猜这是因为ActiveSheet实际上并不是你想要它的表。由于您知道要重命名的工作表是最后一个工作表,因此请改用Sheets对象。

newName = ThisWorkbook.Sheets("Input").Cells(15, 3).Value
ThisWorkbook.Activate
Sheets("Input").Select
Sheets("Input").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = newName & " " & "Input"
Sheets("Output").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = newName & " " & "Output"

同样如上所述,使用Name作为变量并不是一个好主意。

答案 1 :(得分:1)

继上面的评论之后,试试这个

Option Explicit

Sub Sample()
    Dim sName As String

    With ThisWorkbook
        sName = .Sheets("Input").Cells(15, 3).Value

        .Sheets("Input").Copy After:=.Sheets(.Sheets.Count)
        ActiveSheet.Name = sName & " " & "Input"

        .Sheets("Output").Copy After:=.Sheets(.Sheets.Count)
        ActiveSheet.Name = sName & " " & "Output"
    End With
End Sub
相关问题