2014-04-23 50 views
-1

我基本上需要清理這些代碼,我自己讓這些代碼免於複製和粘貼!請指教?複製一個範圍,並將該範圍中的每個單元格值粘貼到excel中的特定新單元格中

Sub cp() 
Worksheets("copy").Select 
Range("b2").Select 
Selection.copy 
Range("b7").Select 
ActiveSheet.Paste 
Range("c2").Select 
Selection.copy 
Range("e7").Select 
ActiveSheet.Paste 
Range("d2").Select 
Selection.copy 
Range("h7").Select 
ActiveSheet.Paste 
Range("e2").Select 
Selection.copy 
Range("k7").Select 
ActiveSheet.Paste 
end sub 

回答

1
Sub cp 
Dim ws as Worksheet 
Set ws = Worksheets("copy") 
ws.Range("B7") = ws.Range("B2") 
ws.Range("E7") = ws.Range("C2") 
ws.Range("H7") = ws.Range("D2") 
ws.Range("K7") = ws.Range("E2") 

End Sub 

??

最好避免在可能的情況下選擇,複製和粘貼。嘗試並直接引用您想要的單元格,範圍,工作表和工作簿。因此,這裏的改進可能是指定工作簿

Dim wb as workbook 
Set wb = workbooks("MyWorkbook") 
dim ws as worksheet 
Set ws = wb.Sheets("copy") 
... 

這樣,excel永遠不會對您引用的單元感到困惑。這在打開工作簿或創建新工作簿時特別方便。

Dim wb as workbook 
Set wb = workbooks.add 'Creates a new workbook, and binds it to the variable wb, so you always know any action on wb is being done to that new workbook 

希望幫助一些

編輯 - 響應您的comment--

而不是使用範圍,你可以使用細胞,這需要一個行和列的數量,而不是列字母的 -

Dim x as Integer 
Dim ws as Worksheet 
Set ws = Worksheets("copy") 
For x = 2 to 500 
    ws.Cells(7,x) = ws.Cells(2,x) 
Next x 

嘗試上設置一個斷點For循環,然後通過它與F8步驟。我沒有完全理解你要做的模式(將B向下移動5行,將C中的值移到E等等),但是如果你可以調整它來滿足你的需求,那聽起來你有足夠的空間來完成你的項目

+0

謝謝你。關於你的初始代碼,我想擴展到500/600單元,這樣就可以達到AA7 AE7 AH7等,而不必複製和粘貼500次。請耐心等待我是VBA新手。 Thansk – user3565577

相關問題