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

VBA 列をコピーする

はじめに

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

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

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

列をコピーする

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

列「B」をコピーするには Columns(2).Copy または Columns("B").Copy のように指定します。

列「C」に貼り付けるには Columns(3).PasteSpecial または Columns("C").PasteSpecial のように指定します。

Columns(2).Copy   ' 列「B」をコピー
Columns("B").Copy ' 列「B」をコピー
Columns(3).PasteSpecial   ' 列「C」に貼り付け
Columns("C").PasteSpecial ' 列「C」に貼り付け
1

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

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

Range("B1").EntireColumn.Copy
Range("C1").EntireColumn.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 を設定するとコピーモードを解除できます。

Columns(2).Copy
Columns(3).PasteSpecial
Application.CutCopyMode = False

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

列「B」を「C」にコピーするには Columns(2).Copy(Columns(3)) または Columns("B").Copy(Columns("C")) のように指定します。

Call Columns(2).Copy(Columns(3))     ' 列「B」を列「C」へ貼り付け
Call Columns("B").Copy(Columns("C")) ' 列「B」を列「C」へ貼り付け

列の範囲をコピーする

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

Range("B:C").Copy         ' 列「B ~ C」をコピー
Range("D:D").PasteSpecial ' 列「D」へ貼り付け

Call Range("B:C").Copy(Range("D:D")) ' 列「B ~ C」を列「D」へ貼り付け
2

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

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

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

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

1

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

' Sheet1 の列「A」をコピー
Sheets("Sheet1").Columns(1).Copy
Sheets("Sheet1").Columns(2).PasteSpecial
Sheets(1).Columns(1).Copy
Sheets(1).Columns(2).PasteSpecial

' Sheet2 の列「A」をコピー
Sheets("Sheet2").Columns(1).Copy
Sheets("Sheet2").Columns(2).PasteSpecial
Sheets(2).Columns(1).Copy
Sheets(2).Columns(2).PasteSpecial

関連ページ