更新日:、 作成日:
VBA セルを移動する (Range.Cut)
はじめに
Excel VBA マクロでセルを移動する方法を紹介します。
Range("B1").Cut または Cells(1, 2).Cut メソッドから、セル「B1」を移動できます。
Paste メソッドから、クリップボードから貼り付けできます。
セルを移動する
Range の引数にセル名を指定すると、そのセルを移動できます。
セル「A1」を「B2」へ移動するには Range("A1").Cut(Range("B2")) を入力します。
Call Range("A1").Cut(Range("B2"))
Cells の引数にセルの行と列の番号を指定すると、そのセルを移動できます。
行「2」、列「A」を移動するには Cells(2, 1).Cut(Range("C1")) を入力します。
Call Cells(1, 1).Cut(Range("C1")) ' A1 を移動
Call Cells(2, 1).Cut(Range("C1")) ' A2 を移動
Call Cells(1, 2).Cut(Range("C1")) ' B1 を移動
Call Cells(2, 2).Cut(Range("C1")) ' B2 を移動
クリップボードに切り取ってから貼り付け
Cut の引数を指定しないと、クリップボードに切り取ってから貼り付けできます。
セル「A1」を切り取るには Range("A1").Cut を入力します。
セル「B1」に貼り付けるには Paste(Range("B1")) を入力します。またはセルを選択してそのセルに貼り付けできます。
Range("A1").Cut ' クリップボードに切り取り
Call Paste(Range("B1")) ' B1 に貼り付け
Range("A1").Cut ' クリップボードに切り取り
Range("B1").Select ' B1 を選択
Paste ' 選択している B1 に貼り付け
スポンサーリンク
セルの範囲を移動する
セルの範囲「A1」~「B2」を移動するには Range("A1:B2").Cut または Range("A1", "B2").Cut を入力します。
Call Range("A1:B2").Cut(Range("C1"))
Call Range("A1", "B2").Cut(Range("C1"))
' A1 → C1 に移動
' A2 → C2 に移動
' B1 → D1 に移動
' B2 → D2 に移動
セルの範囲「A1」~「B2」を「C1」へ移動すると、セルの範囲「C1」~「D2」に移動されます。これは Excel の操作と同じです。
セル「A1」「B2」「C3」のように離れたセルをまとめて移動できません。
Call Range("A1, B2, C3").Cut(Range("D1")) ' エラー
クリップボードに切り取ってから貼り付け
Range("A1:B2").Cut ' A1 ~ B2 を切り取り
Call Paste(Range("C1"))
' A1 → C1 に移動
' A2 → C2 に移動
' B1 → D1 に移動
' B2 → D2 に移動
Range("A1:B2").Cut ' A1 ~ B2 を切り取り
Range("C1").Select ' C1 を選択
Paste
' A1 → C1 に移動
' A2 → C2 に移動
' B1 → D1 に移動
' B2 → D2 に移動
別シートのセルを移動する
シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。
Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。
' Sheet1 のセル「A1」を移動
Call Worksheets("Sheet1").Range("A1").Cut(Range("B2"))
Call Worksheets(1).Range("A1").Cut(Range("B2"))
' Sheet2 のセル「A1」を移動
Call Worksheets("Sheet2").Range("A1").Cut(Range("B2"))
Call Worksheets(2).Range("A1").Cut(Range("B2"))
Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表す Me. が省略されています。
' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"
標準モジュールに Range や Cells を入力すると、開いているシートのセルになります。アクティブシートを表す ActiveSheet. が省略されています。
' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"
スポンサーリンク