サイトについて      連絡先   検索

VBA セルを移動する

はじめに

Excel VBA のセルを移動する方法を紹介します。

Range.Cut メソッドか Cells.Cut メソッドでセルを移動できます。

Range.Offset メソッドで選択状態を移動できます。

セルを移動する

セル自体を移動

Range の引数にセル名を指定すると、そのセルを移動できます。

セル「A1」を「B2」へ移動するには Range("A1").Cut(Range("B2")) のように指定します。

Call Range("A1").Cut(Range("B2"))
1

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 を移動

選択状態を移動

セルを選択するには Select メソッドでできますが、現在選択しているセルの一つ下のセルを選択したいときは Range.Offset メソッドを使用します。

Offset の引数に行と列の数を指定すると、指定したセルから指定した数分ずれたセルを取得できます。

Range("B2").Select ' B2 を選択

Dim c As Range
Set c = Selection ' 選択セル (B2) を取得
c.Offset(-1, 0).Select ' B1 一つ上
c.Offset(1, 0).Select  ' B3 一つ下
c.Offset(0, -1).Select ' A2 一つ左
c.Offset(0, 1).Select  ' C2 一つ右
2

セルの範囲を移動する

セルの範囲「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」~「B2」を「C1」へ移動すると、セルの範囲「C1」~「D2」に移動されます。

3

指定したシートのセルを移動する

Range.Cut とコードに書くと、アクティブなシートのセルを移動します。これは ActiveSheet.Range.Cut の ActiveSheet が省略されています。

' どちらも同じコード
Call Range("A1").Cut(Range("B2"))
Call ActiveSheet.Range("A1").Cut(Range("B2")

シートを指定するには Sheets の引数にシート名またはインデックスを指定します。

1

Sheet1 のシートを指定するには、Sheets("Sheet1") か Sheets(1) と書きます。

' Sheet1 のセル「A1」を移動
Call Sheets("Sheet1").Range("A1").Cut(Range("B2"))
Call Sheets(1).Range("A1").Cut(Range("B2"))

' Sheet2 のセル「A1」を移動
Call Sheets("Sheet2").Range("A1").Cut(Range("B2"))
Call Sheets(2).Range("A1").Cut(Range("B2"))

関連ページ