2017-10-20 5 views
0

あるデータファイル(ワークシートとしてsh1)から別のデータファイル(ワークシートとしてのsho)にセルの範囲をコピーしようとしています。セルは、既存のデータの下に貼り付ける必要があります。コピーするセルの量と既存のデータの量が異なるためです。それは、ワークシートの笙とない値にワークシート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) 

:私はこのコードを作成しました。私はこのコードが ".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

(A1が式の場合)あなたがSheet1Sheet2を持っている場合は、B1にA1の値をコピーする

Range("B1").Formula = Range("A1") 
関連する問題