-1

我使用下面的 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 的单元格值。谁能帮我这个...

4

2 回答 2

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
于 2013-01-10T13:09:32.937 回答
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 作为变量不是一个好主意。

于 2013-01-10T12:41:42.883 回答