11.6 単純なコピペはDestination:=で
5.7 セルの高速コピー(切取り)貼付け高速コピペの方法を紹介していますが、ここでは???.Copy???.PasteSpecialで行った場合とどれぐらい違うかをネタにしました。単純なコピペ(まるごとコピペ)の場合は、Destination:=を使った方がお得です。

ちなみに、「Destination:=の方が優れている!」と言うわけじゃないです。Destination:=の方は速いけど全ての情報をまるごとコピペしかできない???.Copy???.PasteSpecialの方は遅いけど書式だけコピペしたり、値だけコピペなど多機能というメリット・デメリットがあるので、結局は適材適所です。
コピペの事例
まずは、多機能(、???.Copy???.PasteSpecial)でのコピペです。例では、A1〜J10の範囲をA11〜J20へ貼付ける処理を1000回行っています。この方法だと、コピー元・貼付け先に選択枠が付くという特徴もあります。

ちなみに、おいらのPCでは平均で30秒強でした。

Sub prcSlowCopyPaste()

    '遅い例

    Dim i As Long

    Debug.Print "START=" & Time

    'A1〜J10の範囲をA11〜J20へ1000回貼付けます
    For i = 1 To 1000
        Range("A1:J10").Copy
        Range("A11:J20").PasteSpecial
    Next

    Debug.Print "END =" & Time

End Sub
 ※このエクセルマクロはワークシート内へ記述するマクロです


次に、Destination:=を使った速い例です。同じく1000回コピペします。書式や値などをまるごとコピーするのであれば、絶対にこっちがお得です。

ちなみに、おいらのPCでは平均で12秒前後でした。

Sub prcRecordCount2()

    '速い例

    Dim i As Long

    Debug.Print "START=" & Time

    'A1〜J10の範囲をA11〜J20へ1000回貼付けます
    For i = 1 To 1000
        Range("A1:J10").Copy Destination:=Range("A11:J20")
    Next

    Debug.Print "END =" & Time

End Sub
 ※このエクセルマクロはワークシート内へ記述するマクロです
Copyright(C) 1999-2006 結城圭介。 All rights reserved