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

VBA 行をコピーする

はじめに

Excel VBA の行をコピーする方法を紹介します。

Rows.Copy メソッドか Range.Copy メソッドで行をコピーできます。

Rows.PasteSpecial メソッドか Range.PasteSpecial メソッドで貼り付けできます。

行をコピーする

Rows の引数に行番号を指定すると、その行をコピーできます。

行「2」をコピーするには Rows(2).Copy のように指定します。

行「3」に貼り付けるには Rows(3).PasteSpecial のように指定します。

Rows(2).Copy
Rows(3).PasteSpecial
1

Range.EntireRow を使用すると、指定したセルの行を取得できます。

セル「B2」の行をコピーするには Range("B2").EntireRow.Copy のように指定します。

Range("B2").EntireRow.Copy
Range("B3").EntireRow.PasteSpecial (xlPasteAll)

PasteSpecial の引数には貼り付ける形式を指定できます。

形式には次のものがあります。

定数名 説明
xlPasteAll (既定)-4104すべて
xlPasteFormulas-4123数式のみ
xlPasteValues-4163値のみ
xlPasteFormats-4122書式のみ
xlPasteComments-4144コメント
xlPasteValidation6入力規則
xlPasteAllExceptBorders7罫線を除くすべて
xlPasteColumnWidths8列幅
xlPasteFormulasAndNumberFormats11数式と数値の書式
xlPasteValuesAndNumberFormats12値と数値の書式
xlPasteAllUsingSourceTheme
(Excel 2007 以降)
13コピー元のテーマを使用してすべて貼り付け
xlPasteAllMergingConditionalFormats
(Excel 2010 以降)
14すべての結合されている条件付き書式

Copy を使用すると Excel がコピーモードになります。

2

Application.CutCopyMode に False を設定するとコピーモードを解除できます。

Rows(2).Copy
Rows(3).PasteSpecial (xlPasteAll)
Application.CutCopyMode = False

Copy メソッドの引数に貼り付け先の行を指定できます。行の値や書式など全てが貼り付けられます。このときはコピーモードにはならず、クリップボードにもコピーされません。

行「2」を「3」にコピーするには Rows(2).Copy(Rows(3)) のように指定します。

Call Rows(2).Copy(Rows(3)) ' 2 行目を 3 行目 へ貼り付け

行の範囲をコピーする

行の範囲「2 ~ 3」をコピーするには Range("2:3").Copy のように指定します。

Range("2:3").Copy         ' 行「2 ~ 3」をコピー
Range("4:4").PasteSpecial ' 行「4」へ貼り付け

Call Range("2:3").Copy(Range("4:4")) ' 2 ~ 3 行目を 4 行目 へ貼り付け
2

指定したシートの行をコピーする

Rows.Copy とコードに書くと、アクティブなシートの行をコピーします。これは ActiveSheet.Rows.Copy の ActiveSheet が省略されています。

' どちらも同じコード
Rows(1).Copy
ActiveSheet.Rows(1).Copy

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

1

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

' Sheet1 の行「1」をコピー
Sheets("Sheet1").Rows(1).Copy
Sheets("Sheet1").Rows(2).PasteSpecial
Sheets(1).Rows(1).Copy
Sheets(1).Rows(2).PasteSpecial

' Sheet2 の行「1」をコピー
Sheets("Sheet2").Rows(1).Copy
Sheets("Sheet2").Rows(2).PasteSpecial
Sheets(2).Rows(1).Copy
Sheets(2).Rows(2).PasteSpecial

関連ページ