2017-10-20 163 views
0

我試圖從一個數據文件(sh1作爲工作表)複製到另一個(作爲工作表)作爲單元格的範圍。單元格應粘貼在現有數據下。由於要複製的單元格數量和現有數據量有所不同。我創造了這個代碼:VBA Excel複製值而不是功能沒有.PasteSpecial

Dim sh1 As Worksheet, sho As Worksheet, lr As Long, rng1 As Range 
    lr = sh1.Cells(Rows.Count, 1).End(xlUp).Row 
    Set rng1 = sh1.Range("A3:B" & lr) 
    rng1.Copy sho.Cells(Rows.Count, 1).End(xlUp)(2) 

這工作完全正常 - 但它在複製工作表SH1到工作表笑的功能,而不是價值。我知道這個代碼是「.PasteSpecial」,但我無法在我的代碼中匹配它,而不會破壞其他先決條件。

回答

0

請嘗試以下操作:

Option Explicit 


Sub test() 

    Dim sh1 As Worksheet, sho As Worksheet, lr As Long, rng1 As Range 

    Set sh1 = Sheet1 
    Set sho = Sheet2 

    lr = sh1.Cells(Rows.Count, 1).End(xlUp).Row 
    Set rng1 = sh1.Range("A3:B" & lr) 
    rng1.Copy 
    sho.Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial xlPasteValues 



End Sub 
+0

哇,謝謝!此代碼完美工作,看起來很優雅:-)非常感謝您的救命! – Annegret

+0

歡迎您! :) –

0

相反的:

rng1.Copy sho.Cells(Rows.Count, 1).End(xlUp)(2) 

直接指定的值。它避免了clipbaord,因此它的速度更快:

sho.Cells(sho.Rows.Count, 1).End(xlUp).Offset(2).Resize(rng1.rows,rng1.columns).Value = rng1.Value 
+0

感謝您的快速響應!不幸的是,這行代碼不適合我。我在啓動時發送到調試器菜單,但無法找到錯誤,因爲從我的(天真)角度來看,它看起來不錯... – Annegret

0

您可以使用此代碼,如果你有Sheet1Sheet2至A1的值複製到B1(如果A1是一個公式)

Range("B1").Formula = Range("A1")