【VBA】セルやセル範囲を切り取り、移動する

こんにちは、Ryoです。
ExcelVBAでデータを扱う際に読み書きは当然ですが、指定セルやセル範囲を切り取って別の指定位置に貼り付ける(移動する)ことを実施したいケースもあります。

今回はCut/Pasteメソッドを使い、移動する方法について書いてみたいと思います。



1.サンプル概要

先ず下の画像に示す表があるとします。

この表に対し、セルE4~F16の範囲を指定して切り取り、移動先(貼り付け位置)セルI4として実行すると、以下の様になります。

この動作のサンプルコードを以下に示します。

2.サンプルコード

以下サンプルコードは全てセル範囲を移動させる形で書いていますが、セル単体であればその様に指定すればOKです。(例:Cells(4, 5).Cut Destination:=Cells(4, 9)など)

◆Cutメソッド

Sub Sample1()

  'セルE4~F16をセルI4を基点とする位置に移動
  Range(Cells(4, 5), Cells(16, 6)).Cut Destination:=Cells(4, 9)

End Sub

Cutメソッドを使う場合は、このようになります。

オブジェクト.Cut Destination:=貼り付け先

引数のDestinationには貼り付け先を指定するので、サンプルではDestination:=Cells(4, 9)と指定していますが、ここで注意すべきは既にデータが存在する場合に上書きされることになりますので、留意しておく必要があります。

又、同一Sheet内のみならず、別Sheetへの移動も可能です。
その場合は以下の様に記述します。

Sub Sample2()

  Range(Cells(4, 5), Cells(16, 6)).Cut Destination _
  :=Worksheets("Sheet2").Cells(4, 2)
  'Sheet2のセルB4を基点とする位置に移動

End Sub

引数Destinationの指定にワークシートも追加指定すればOKです。
これを実行すると、Sheet2のB4位置に移動されています。

◆Pasteメソッド

こちらもCutメソッドは同様に使うのですが、指定する際にPsateメソッドを使うこともできますので、以下にサンプルコードを示します。

私の個人的な考えですが、最初に書きましたCutメソッドを使ってDestinationで指定すれば事足りますから、私はこの使い方はほぼ実践してないですね。

Sub Sample3()

 Range(Cells(4, 5), Cells(16, 6)).Cut
 ActiveSheet.Paste Destination:=Cells(4, 9)

End Sub

これも同様の結果になります。

3.まとめ

シート内にあるデータで特に加工なども必要なく、特定の場所に移動することで事足りる場合で例えば旧フォームのデータから新フォームに移行する場合に範囲を切り取って移動させるなど、知っていると役立つ場面も多いかと思います。

記述自体も簡単ですから直ぐに使えると思いますが、移動先は上書きされるということだけ注意してくださいね。(大事なことなのでもう一回言いました(笑))




以上、セルやセル範囲を切り取り、移動する方法についてでした!
今回の記事が何かの参考になれば幸いです。

Ryo

スポンサーリンク
スポンサーリンク

楽天トラベル

シェアする

フォローする

スポンサーリンク

楽天トラベル