2013-01-10 54 views
-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" 

此代碼工作正常,直到複製輸入工作表。但它也重命名輸出表,它會在最後一行中導致錯誤,因爲表格名稱Output將被單元格值C15取代。任何人都可以幫我這個...

+2

避免使用「姓名」作爲變量名!作爲一個屬性名稱,考慮「名稱」作爲保留字,以避免問題。 –

+0

什麼是錯誤?不要讓我們猜測! – RBarryYoung

+0

@iDevlop酷!這很簡單。非常感謝你 – Pramod

回答

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作爲變量不是一個好主意。

+0

謝謝尼克。問題出在關鍵字名稱上,這是由iDevelop澄清的。通過你的代碼,結果是一樣的 – Pramod

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