2017-10-20 307 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")