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

VBA セルの書式をコピーする

はじめに

Excel VBA のセルの書式をコピーする方法を紹介します。

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

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

書式設定

Excel で書式をコピーするには、セルをコピーしてから右クリックして「形式を選択して貼り付け」をクリックします。

ここで書式を選択して貼り付けると書式だけをコピーできます。

1

セルの書式をコピーする

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

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

セル「B1」に書式を貼り付けるには Range("B1").PasteSpecial(xlPasteFormats) のように指定します。

Range("A1").Copy
Range("B1").PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
3

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

行「2」、列「A」の書式をコピーするには Cells(2, 1).Copy のように指定します。

s = Cells(1, 1).Copy ' A1
s = Cells(2, 1).Copy ' A2
s = Cells(1, 2).PasteSpecial (xlPasteFormats) ' B1
s = Cells(2, 2).PasteSpecial (xlPasteFormats) ' B2
Application.CutCopyMode = False

Application.CutCopyMode に False を設定しているのは、Copy メソッドを呼ぶとそのセルがコピーモードになるためです。これを解除しています。

2

セルの範囲の書式をコピーする

セルの範囲「A1」~「B2」の書式をコピーするには Range("A1:B2").Copy または Range("A1", "B2").Copy のように指定します。

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

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

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

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

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

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

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

1

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

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

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

関連ページ