我使用下面的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。任何人都可以帮我这个......
答案 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