2012-12-27 66 views
1

這是我需要的代碼行,當複製單元格時,請在目標工作簿中保留格式。我不確定我會如何將「PasteSpecial Paste:= xlPasteValues」合併到其中。使用複製目標和特殊粘貼來保持格式化

wbkOut.Worksheets(1).Range("E44:E2000").Copy Destination:=wbkVer.Worksheets("Metabuild").Range("A" & wbkVer.Worksheets("Metabuild").Range("A65536").End(xlUp).Row + 1) 
+0

如果您知道目的地範圍的地址,那麼你也可以做到這一點(例如) 'wbkVer.Worksheets(「元軟件包「).Range(」A44:A2000「)。Value = wbkOut.Worksheets(1).Range(」E44:E2000「)。值' –

回答

7

本是對的。既然他沒有告訴你如何,我會的。

wbkOut.Worksheets(1).Range("E44:E2000").Copy 

With wbkVer.Worksheets("Metabuild") 
    .Range("A" & .Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues 
End With 

您可能要添加的另一件事是檢查,以確保有在您的工作表來處理複製區域的行數,如果你需要它的底部足夠的行。如果沒有足夠的行,代碼將會引發錯誤。

爲了做到這一點,代碼將是這個樣子:

Option Explicit 

Dim rngCopy as Range, lngCopy as Long 

Set rngCopy = wkbOut.Worksheets(1).Range("E44:E2000") 
lngCopy = rngCopy.Rows 
rngCopy.Copy 

With wbkVer.Worksheets("Metabuild") 

    Dim rngCheck as Range 
    Set rngCheck = .Range(.Range("A" & .Rows.Count).End(xlup).Offset(1),.Range("A" & .Rows.Count) 

    If rngCheck.Rows >= lngCopy Then 

     .Range("A" & .Rows.Count).End(xluP).Offset(1).PasteSpecial xlPasteValues 

    Else 

     Msgbox "Not enough space!" 

    End If 

End With 
+0

+ 1很好解釋:) –

+0

完美,謝謝Scott! – Mike

+0

我忘了補充 - 謝謝你的補充支票;我也補充說。 :) – Mike