
VBA上でセル情報を切り取りするにはCutメソッドを使います。
先日紹介したCopyメソッドほどではないですが、Copyメソッドとほぼ使い方は一緒ですし、切り取りもExcelの基本操作のため、Copyメソッドと合わせて覚えておくと良いでしょう。
Cutメソッドの基本構文
Rangeオブジェクト.Cut(Destination)
Rangeオブジェクト
Cutメソッドを指定するRangeオブジェクトを指定します。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
Rangeオブジェクトを参照するためのRangeプロパティに関しては下記記事をご参照ください。
【Excel VBA】単一セルやセル範囲を参照するRangeプロパティまとめ | Excelを制する者は人生を制す ~No Excel No Life~
引数Destination
切り取りした情報の貼り付け先を指定できる引数です。
この引数は省略可能です。
省略した場合は切り取りした情報はクリップボードに格納されます。
(クリップボードに格納された情報を貼り付けたい場合は別途PasteメソッドやPasteSpecialメソッドのコードを記述する必要があります)
使用例
今回は下記のようにB3:B7の範囲にあるセル情報をD3:D7の範囲に切り取って貼り付けるとします。
その場合は以下のコードになります。
1 2 3 | Sub カット例①() Range("B3:B7").Cut Destination:=Range("D3") End Sub |
コピーしたいセルを最初にRangeプロパティで指定し、そのあとにCutメソッドを記述。(貼り付けする必要がない場合はここで終了)
そのあとに引数「Destination」として”Destination:=”に貼り付けしたいセルを記述で完了です。
マクロの動作イメージ
Cutメソッドで指定しているB3:B7がD3セルへ貼り付けされました。
切り取りした情報が5行×1列で5セル分、貼り付け先のセルは1行×1列で1セル分となるため、D3セルを起点に5セル分の情報が貼り付けされます。
なお、コピーされるのは値だけでなく、罫線や塗りつぶしの色等の書式の情報も貼り付けされます。
切り取り元のB3:B7のセル範囲は値や書式等は初期設定されます。
【参考】引数Destinationを省略した場合
1 2 3 | Sub カット例②() Range("B3:B7").Cut End Sub |
引数Destinationを省略した場合は切り取った情報はクリップボードへ格納されます。
【参考】切り取り範囲に連続セル以外を指定した場合
1 2 3 | Sub カット例③() Range("B3,B7").Cut End Sub |
通常のワークシート上と同じく、単一セルか連続したセル範囲以外を切り取り元に指定するとエラーが表示されます。
なので、上記のコードのように飛び飛びのセル範囲をいっしょに指定すると下記のエラーが表示されます。
実行時エラー’1004′:
複数の選択範囲に対してこの機能を実行することはできません。
1つの範囲を選び、もう一度お試しください。
【参考】引数Destinationで別シートのセルを指定した場合
1 2 3 | Sub カット例④() Range("B3:B7").Cut Destination:=Worksheets(2).Range("D3") End Sub |
引数Destinationは切り取り元のセルと同じシートでないシートのセル範囲を指定することも可能です。
上図のサンプルでは、切り取り元のB3:B7のセル範囲をSheet2のD3:D7へ貼り付けすることができました。
ちなみに別ブックのシートも指定することが可能です。
まとめ
Cutメソッドは切り取り元の情報を初期化しても問題ない場合に、貼り付けといっしょに初期化できるので、状況に応じてCopyメソッドと使い分けを行いましょう。
ご参考になれば幸いです(*^^*)