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

VBA セルをコピーする

はじめに

Excel VBA マクロのセルをコピーする方法を紹介します。

Range.Copy メソッドまたは Cells.Copy メソッドでセルをコピーできます。

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

形式を選択して貼り付け

Excel の「形式を選択して貼り付け」と同じように貼り付けられます。

3
  • 目次
    • セルをコピーする
    • セルの範囲をコピーする
    • 指定したシートのセルをコピーする

セルをコピーする

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

セル「A1」をコピーするにはRange("A1").Copyを入力します。

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


Range("A1").Copy
Range("B1").PasteSpecial (xlPasteAll)
1

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

行「2」、列「A」をコピーするにはCells(2, 1).Copyを入力します。

行「2」、列「B」をコピーするにはCells(2, 2).PasteSpecial(xlPasteAll)を入力します。


Cells(1, 1).Copy ' A1
Cells(2, 1).Copy ' A2
Cells(1, 2).PasteSpecial (xlPasteAll) ' B1
Cells(2, 2).PasteSpecial (xlPasteAll) ' B2

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 を設定すると、これを解除できます。


Range("A1").Copy
Range("B1").PasteSpecial (xlPasteAll)
Application.CutCopyMode = False ' コピーモードを解除

クリップボードにコピーしない

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

セル「A1」を「B2」にコピーするにはRange("A1").Copy(Range("B2"))を入力します。


Call Range("A1").Copy(Range("B2")) ' B2 へ貼り付け

セルの範囲をコピーする

セルの範囲「A1」~「B2」をコピーするにはRange("A1:B2").CopyまたはRange("A1", "B2").Copyを入力します。


Range("A1:B2").Copy
Range("A1", "B2").Copy

Range("A3").PasteSpecial
' A1 → A3 に貼り付け
' A2 → A4 に貼り付け
' B1 → B3 に貼り付け
' B2 → B4 に貼り付け
2

セルの範囲「A1」~「B2」を「A3」に貼り付けると、セルの範囲「A3」~「B4」に貼り付けられます。これは Excel の操作と同じです。

クリップボードにコピーしない


Call Range("A1:B2").Copy(Range("A3"))
' A1 → A3 に貼り付け
' A2 → A4 に貼り付け
' B1 → B3 に貼り付け
' B2 → B4 に貼り付け

Call Range("A1").Copy(Range("A3:B4"))
' A1 → A3 に貼り付け
' A1 → A4 に貼り付け
' A1 → B3 に貼り付け
' A1 → B4 に貼り付け

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

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

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

sheet1

' Sheet1 のセル「A1」をコピー
Worksheets("Sheet1").Range("A1").Copy
Worksheets("Sheet1").Range("B1").PasteSpecial
Worksheets(1).Range("A1").Copy
Worksheets(1).Range("B1").PasteSpecial

' Sheet2 のセル「A1」をコピー
Worksheets("Sheet2").Range("A1").Copy
Worksheets("Sheet2").Range("B1").PasteSpecial
Worksheets(2).Range("A1").Copy
Worksheets(2).Range("B1").PasteSpecial

Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表すMe.が省略されています。


' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"

標準モジュールに Range や Cells を入力すると、アクティブなシートのセルになります。アクティブシートを表すActiveSheet.が省略されています。


' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"
  • 目次
    • セルをコピーする
    • セルの範囲をコピーする
    • 指定したシートのセルをコピーする