Copy / PasteSpecial オブジェクトRange メソッド(動作)

Range

はじめに

Excel VBAでは、セルの内容や書式を他の場所へ複製・貼り付ける操作が頻繁に行われます。これを実現する基本的なメソッドが CopyPasteSpecial です。

  • Copy:範囲をコピーする(値、書式、数式など)
  • PasteSpecial:コピーした内容を選択的に貼り付ける(値のみ、書式のみなど)

この2つを組み合わせることで、柔軟かつ強力な貼り付け操作が可能となります。


1. Range.Copy メソッドの基本

■ 構文

Range("A1").Copy [Destination]
  • Destination:貼り付け先の範囲(省略可能)

■ 主な使い方

● コピーして他の場所に貼り付け

Range("A1").Copy Destination:=Range("B1")

これは、A1の内容(値・書式)をB1にコピーします。

● コピー後に Paste する(クリップボードを経由)

Range("A1").Copy
Range("C1").PasteSpecial

PasteSpecial を使わず ActiveSheet.Paste を使うこともできます。


2. Range.PasteSpecial メソッドの基本

■ 構文

Range("B1").PasteSpecial [Paste], [Operation], [SkipBlanks], [Transpose]

■ 引数一覧

引数説明
Paste貼り付けの種類(例:xlPasteValues, xlPasteFormats など)
Operation数学的演算(xlPasteSpecialOperationAdd など)
SkipBlanks空白セルを無視するか
Transpose行列を入れ替えて貼り付けるか

3. よく使う Paste 種類の一覧

定数名内容
xlPasteAllすべて貼り付け(デフォルト)
xlPasteValues値のみ貼り付け
xlPasteFormats書式のみ貼り付け
xlPasteFormulas数式のみ貼り付け
xlPasteCommentsコメントのみ貼り付け
xlPasteColumnWidths列幅の貼り付け

4. 使用例

4.1 値だけをコピー

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues

A1の値だけをB1に貼り付けます。書式や数式はコピーされません。


4.2 書式だけをコピー

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteFormats

書式のみをコピーして、値は変更せずに見た目だけ一致させます。


4.3 数式だけをコピー

Range("A2").Copy
Range("B2").PasteSpecial Paste:=xlPasteFormulas

4.4 行と列を入れ替えて貼り付け(転置)

Range("A1:C2").Copy
Range("E1").PasteSpecial Transpose:=True

2行3列の表が、3行2列の表として貼り付けられます。


4.5 空白セルを飛ばして貼り付け

Range("A1:A5").Copy
Range("B1").PasteSpecial SkipBlanks:=True

空白セルは上書きせず、既存データを保持します。


5. 貼り付け操作の後処理(クリップボードの解放)

VBAで .Copy を使うと、クリップボードにデータが残ります。操作後に以下のコードでクリップボードを解放できます。

Application.CutCopyMode = False

このコードを入れることで、コピー後の点線(点滅枠)も消え、見た目も整います。


6. Copy に Destination を使ったシンプルな方法

クリップボードを使わずに完結したい場合:

Range("A1").Copy Destination:=Range("C1")

これは CopyPasteSpecial を同時に処理します。


7. 応用例

7.1 複数範囲の一括コピー(値のみ)

Range("A1:A5").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues

7.2 特定条件の行だけコピー

If Range("A1").Value > 100 Then
Range("A1:E1").Copy
Range("A10").PasteSpecial Paste:=xlPasteValues
End If

8. よくあるエラーと注意点

エラー内容対策方法
PasteSpecial の直前に Copy が無い必ず .Copy を事前に呼び出す
貼り付け先が非対応の形式Paste の種類を確認する
シートをまたいだコピーでエラーシートをアクティブにするか Destination を使う
コピー後に点滅枠が消えないApplication.CutCopyMode = False を忘れずに

9. まとめ:使い分けのポイント

方法特徴
Range("A1").Copy Destination:=...クリップボードを使わない高速処理
Range("A1").Copy + PasteSpecial値や書式など貼り付けを細かく指定可能
PasteSpecial Paste:=xlPasteValues値のみ貼り付け。数式や書式は除外
PasteSpecial Transpose:=True行列の転置貼り付けに便利
SkipBlanks:=True空白を飛ばして既存データを残したまま貼り付け可
タイトルとURLをコピーしました