簡単な輸出インボイス作成マクロ (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