有3種不同的方法來引用不同的紙張。下面是從這裏被盜:http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm
表標籤名稱
如果你曾經記錄在Excel中的宏引用特定工作表在工作簿中,你會知道這些代碼只會繼續如果紙張工作名稱保持不變。例如,代碼如;表格(「預算」)。如果重新命名預算表,則選擇將不再起作用。這是因爲宏記錄器基於Sheets選項卡名稱生成此類代碼,這是我們在Excel中看到的名稱。如果它讓你感覺好一些,許多VBA編碼器也會使用兩個更好的方式來使用Sheet選項卡名稱,因爲他們不知道更好。
索引號
A頁索引號由其在工作簿中的位置確定。最左邊的工作表總是有一個索引號1,右邊的下一個將是2,依此類推。 Excel VBA允許我們使用它的索引號來指定任何工作表,但不幸的是,當我們錄製一個宏時,這個方法不會被Excel使用。它使用表格標籤名稱,如;表格(「預算」)。選擇如果這張表是從左邊第三個,我們可以使用:表格(3)。選擇。這通常比使用工作表選項名稱更好,但仍有潛在的問題。我的意思是,如果我們添加,刪除或移動工作表,工作簿中的工作表位置可能會發生變化。
表代碼名稱
這是精明的VBA程序員使用的方法。工作簿中的每張工作表都有一個唯一的CodeName,即使該工作表被移動,重命名或添加了其他工作表,也不會更改。每個片代號只能通過進入Visual Basic編輯器(工具>宏> Visual Basic編輯器ALT + F11),然後顯示所述項目瀏覽器(視圖>項目瀏覽器CTL + R)
在屏幕中可以看出上面的拍攝,標籤名稱爲預算的工作表的CodeName是Sheet3。在工程瀏覽器中查看時,工作表CodeName始終是不在括號內的名稱。我們可以在工作簿中使用VBA代碼在工作簿中引用此工作表:選擇Sheet或Sheet選擇表格(「預算」)。選擇或表格(3)。選擇
如果您的工作簿已滿VBA代碼,或書面的,不使用CodeName,您可以通過在VBE(Visual Basic編輯器)中編輯>替換來更改它在項目級別(工作簿中所有模塊中的所有代碼)。 一個拉回
唯一倍不能使用一個片代號是當引用一個片,其是在不同的工作簿的代碼駐留的一個。
通過以上信息您的代碼現在變爲:
Sub COPYVALUES()
Sheets("Base_Copy").Range("F15:AK46").Copy
' OR Sheets(2).Range("F15:AK46").Select
' OR Sheet2.Range("F15:AK46").Select
Sheets("Final_Copy").Range("F15:AK46").Paste
Application.CutCopyMode = False
End Sub
現在,在一個側面說明:您沒有使用複製/粘貼到移動數據...
嘗試以下單行代碼:
Sub COPYVALUES()
Sheets("Final_Copy").Range("F15:AK46").Value = Sheets("Base_Copy").Range("F15:AK46").Value
End Sub
在您的頂級解決方案中,您正在同一工作表上選擇範圍。這會將數據粘貼到您複製的相同單元格。你應該更新到'Worksheets(「Final_Copy」)。Range(「F15:AK46」)。選擇'。 – Harrison
@哈里森我更新了腳本,但它更像是一個例子......我想我們都同意它應該是SheetCodeName.Range(x).Value = SheetCodeName.Range(x).Value –
Excel 2007給了我一個錯誤與'Sheets(「Final_Copy」)。範圍(「F15:AK46」)。Paste。我正在使用你的第一個代碼,我想添加到一個按鈕的動作,所以它工作時,我單擊工作表上的按鈕編輯:您的第二個代碼完美的作品,但我想知道如何鏈接到一個按鈕,在先進的感謝 – fmonper1