簡単な輸出インボイス作成マクロ (20)

X) セルのコピー・移動

Copy メソッド
コピーする場合は、「Rangeオブジェクト」を指定して、「Copyメソッド」を使用します。

Excelで通常の「コピー」→「貼り付け」操作を行うと、データはいったん「クリップボード」に保存されます。

しかし、下記の「プロシージャ」のように、「Copyメソッド」の引数にデータの転送先[Destination]を指定すれば、「クリップボード」を経由せずに、データをコピー・貼り付けすることができます。

但し、値・書式の指定は、下記「Pasteメソッド」同様、できません。値・書式の指定をするには、「PasteSpecialメソッド」]を使用します。

Sub CopyMessrs2()
    Sheets("SI").Range("B10:B11").Copy _
    Destination:=Sheets("INV").Range("C12")
End Sub

上記の[Copy]の後の[ _]ですが、「行継続文字」と言って、一行の「ステートメント」が長くなってしまう場合に使用します。「半角スペース」と「アンダースコア」[ _]で、改行の役割をします。文字列の途中で、「行継続文字」を使用することはできません。

コード作成中に、「行継続文字」を省くと、下記のようにエラーで「ステートメント」が赤字で表示されます。

また、「Destination:=」の表記は、下記のように、省略可能です。

Sub CopyMessrs2()
    Sheets("SI").Range("B10:B11").Copy Sheets("INV").Range("C12")
End Sub

Pasteメソッド
「Pasteメソッド」は「Worksheetオブジェクト」を指定して、引数で転送先を指定します。

転送先を指定しなければ、リンク[LINK]を「True」にして、元データにリンクできます。規定値は「False」になっています。

下記の例では、データは「クリップボード」に保存されるので、データを貼り付け後、[Application.CutCopyMode = False]ステートメントで「コピーモード」を解除しています。

Sub CopyMessrs3()
    Sheets("SI").Range("B10:B11").Copy
    Sheets("INV").Paste Range("C12")
    Sheets("INV").Paste Range("F12")
    Application.CutCopyMode = False
End Sub

Cutメソッド
データを移動する場合は、「Cutメソッド」を使用します。

「Cutメソッド」は「Copyメソッド」と同様に、「Rangeオブジェクト」を指定します。

下記の「プロシージャ」は、引数を「Cutメソッド」で指定した場合と、「Pasteメソッド」を使用してデータを移動した例です。

Sub CutMessrs1()
    Sheets("SI").Range("B10:B11").Cut _
    Destination:=Sheets("INV").Range("C12")
End Sub
Sub CutMessrs2()
    Sheets("SI").Range("B10:B11").Cut
    Sheets("INV").Paste Range("C12")
End Sub