VBA入門
第41回.セルのコピー&値の貼り付け(PasteSpecial)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-11-18

第41回.セルのコピー&値の貼り付け(PasteSpecial)


値の貼り付けと題しましたが、値だけではなく、「形式を選択して貼り付け」のいろいろな指定方法です。


セルをコピーして、他のセルに「形式を選択して貼り付け」する場合のマクロVBAコードです。
セルの値や書式を別のセルコピーすることはマクロVBAでは定番かつ必須の技術になります。

PasteSpecialメソッド

Range.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)



名前 指定値 説明
Paste xlPasteAll すべてを貼り付けます。
xlPasteAllExceptBorders 輪郭以外のすべてを貼り付けます。
xlPasteAllMergingConditionalFormats すべてを貼り付け、条件付き書式をマージします。
xlPasteAllUsingSourceTheme ソースのテーマを使用してすべてを貼り付けます。
xlPasteColumnWidths コピーした列の幅を貼り付けます。
xlPasteComments コメントを貼り付けます。
xlPasteFormats 書式を貼り付けます。
xlPasteFormulas 数式を貼り付けます。
xlPasteFormulasAndNumberFormats 数式と数値の書式を貼り付けます。
xlPasteValidation 入力規則を貼り付けます。
xlPasteValues 値を貼り付けます。
xlPasteValuesAndNumberFormats 値と数値の書式を貼り付けます。
Operation xlPasteSpecialOperationAdd コピーしたデータは、対象セルの値に加算されます。
xlPasteSpecialOperationDivide コピーしたデータは、対象セルの値によって割り算されます。
xlPasteSpecialOperationMultiply コピーしたデータには、対象セルの値に掛け算されます。
xlPasteSpecialOperationSubtract コピーしたデータは、対象セルの値に引き算されます。
xlPasteSpecialOperationNone 貼り付け操作で計算は行われません。
SkipBlanks バリアント型 (Variant) クリップボードに含まれる空白のセルを貼り付けの対象にしないようにするには、True を指定します。
既定値は False です。
Transpose バリアント型 (Variant) 貼り付けのときにデータの行と列を入れ替えるには、True を指定します。
既定値は False です。

「形式を選択して貼り付け」の画面と対応させてみるようにしてください。

マクロ VBA コピー 値の貼り付け

値の貼り付け

Worksheets("Sheet1").Range("A1:B10").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial _
                 Paste:=xlPasteValues, _
                 Operation:=xlNone, _
                 SkipBlanks:=False, _
                 Transpose:=False

値を張り付ける場合は、VBAをこのように記述します。
前回のPasteとは違い、アクティブシート以外にも貼り付けが可能です
従って、
Paste:=xlPasteAll
これなら、セルの全てがコピーされるので、Pasteと同じ機能で別シートに貼り付け可能になります。

いろいろなコピーのVBAの書き方

Pasteを使って


Sheets("Sheet1").Select

Range("A1:B10").Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False


Destinationを使って
Sheets("Sheet1").Range("A1:B10").Copy Destination:=Sheets("Sheet2").Range("A1")

PasteSpecialを使って

Sheets("Sheet1").Range("A1:B10").Copy
Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteAll


これら3つのVBAコードは、実行結果は同じになります。

PasteSpecialの使用例

Sheet1のA1:B10をコピーして、
Sheet2のA1に、行列を入れ替えて値を貼り付けします。

Worksheets("Sheet1").Range("A1:B10").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues, Transpose:=True

マクロVBAでよく使うものとしては、
Paste:=xlPasteValues ・・・ 値を貼り付け
Transpose:=True ・・・ 行と列を入れ替え
このあたりは、しっかり使えるようにしておきましょう。

最後に

マクロVBAで、セルのコピー&ペーストは必須になります。
セルの値・書式のコピペが登場しないマクロVBAの方が少ないと言っても過言ではないでしょう。

次回の、
第42回.セルをコピーするとは
セルをコピーするとは、どういう事でしょうか… セルをコピーするというマクロVBAを少し掘り下げて考えることで、より実践的なマクロVBAコードを書くことが出来るようになります。コピーと一言で言っているものは、何のコピーを指しているのでしょうか。
こちらと合わせて、ぜひ、しっかりと覚えて下さい。



同じテーマ「VBA入門」の記事

第38回.セルに計算式を設定(Formula)
第39回.セルのクリア(Clear,ClearContents)
第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)
第41回.セルのコピー&値の貼り付け(PasteSpecial)
第42回.セルをコピーするとは
第43回.総合練習問題5
第44回.VBA関数について
第45回.VBA関数(Format)
第46回.VBA関数(日付,DateAdd)
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)


新着記事NEW ・・・新着記事一覧を見る

トランザクション処理|SQL入門(12月11日)
インデックスを作成して高速化(CREATE INDEX)|SQL入門(12月9日)
他のテーブルのデータで追加/更新/削除|SQL入門(12月8日)
データの削除(DELETE)|SQL入門(12月7日)
データの更新(UPDATE)|SQL入門(12月6日)
複数のSELECT結果を統合(UNION,UNION ALL)|SQL入門(12月5日)
テーブルを結合して取得(INNER JOIN,OUTER JOIN)|SQL入門(12月4日)
データベースの正規化とマスタの作成|SQL入門(12月3日)
データベースにおけるNULLの扱い方|SQL入門(12月2日)
オブジェクト変数とは何か|VBA技術解説(12月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • セルのコピー&値の貼り付け(PasteSpecial)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
    掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ