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

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

クリップボードにコピーする

Cut に引数を指定しないと、クリップボードに切り取ってから貼り付けできます。

セル「A1」を切り取るにはRange("A1").Cutを入力します。

セル「B1」に貼り付けるにはPaste(Range("B1"))を入力します。


Range("A1").Cut
Call Paste(Range("B1"))

選択状態を移動

セルの選択状態を移動するには、移動先の範囲を Select メソッドで選択します。

選択しているセルを取得するにはSelectionを入力します。

選択状態を行「1」、列「0」移動するにはOffset(1, 0)を入力します。


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

Dim c As Range
Set c = Selection ' 選択セル (B2) を取得
c.Offset(-1, 0).Select ' B1 1 つ上を選択
c.Offset(1, 0).Select  ' B3 1 つ下を選択
c.Offset(0, -1).Select ' A2 1 つ左を選択
c.Offset(0, 1).Select  ' C2 1 つ右を選択
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 → C1 に移動
' A2 → C2 に移動
' B1 → D1 に移動
' B2 → D2 に移動
3

セルの範囲「A1」~「B2」を「C1」へ移動すると、セルの範囲「C1」~「D2」に移動されます。これは Excel の操作と同じです。

セル「A1」「B2」「C3」のように離れたセルをまとめて移動できません。


Call Range("A1, B2, C3").Cut(Range("D1")) ' エラー

クリップボードにコピーする


Range("A1:B2").Cut

Call Paste(Range("C1"))
' A1 → C1 に移動
' A2 → C2 に移動
' B1 → D1 に移動
' B2 → D2 に移動

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

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

Sheet1 を指定するにはWorksheets("Sheet1")またはWorksheets(1)を入力します。

sheet1

' 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 = "アクティブ"
  • 目次
    • セルを移動する
    • セルの範囲を移動する
    • 指定したシートのセルを移動する