Selection.Copy '値のみ貼り付け Range("B1").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False
Selection.Copy '書式のみ貼り付け Range("B1").PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False
Selection.Copy '数式の貼り付け Range("B1").PasteSpecial Paste:=xlPasteFormulas Application.CutCopyMode = False
セルの全てのデータではなく、特定のデータのみを貼り付けするには「PasteSpecial」メソッドを使用します。このメソッドの引数「Paste」の設定により貼り付けるデータを指定できます
コードの解説
「Selection.Copy」
「Application.CutCopyMode = False」
の2行に関しては、セルのコピーに解説があります
(こちらの記事で確認してください)
「Range(“B1”).PasteSpecial Paste:=xlPasteValues」
セルの値のみ貼り付けには引数に「xlPasteValues」を指定します
画像ではB列が貼り付け結果です
A3はSUM関数が入力されたものを貼り付けしていますが、「333」という数値が入っていることを確認してください
なお、この画像ではわかりやすくするために「数式の表示」を有効にしていますので、見えている関数は文字列ではありません
「Range(“B1”).PasteSpecial Paste:=xlPasteFormats」
セルの書式のみ貼り付けには引数に「xlPasteFormats」を指定します
画像ではC列が貼り付け結果です
書式のみを貼り付けを行う際には、元データから表などの範囲全体に適用する事も多いと思います
なので、コピー元は1つのセルを指定して、貼り付け先を範囲指定にすればその範囲全てに同じ設定が貼り付けられます
「Range(“B1”).PasteSpecial Paste:=xlPasteFormulas」
セルの数式を貼り付けするには引数に「xlPasteFormulas」を指定します
画像ではD列が貼り付け結果です
画像ではA3のSUM関数が相対参照で同じセル参照の関数が貼り付けられています
上記にあるように関数の表示をしているので、確認してください
数式のコピーは小計を出したりするときに使う事も多いと思いますが
貼り付け先を範囲指定にすれば、同じ形式の数式が貼り付けられます
この構文では引数にあるセルアドレスは相対参照で更新されます
このメソッドについて
このメソッドでは貼り付け先が選択状態になりますので、アクティブセルの使用時には注意が必要です
また通常の貼り付けとは違い、このメソッドではセルを対象オブジェクトとして貼り付けを実行する事ができます
通常の貼り付け操作では、Applicationオブジェクトに対するメソッドでした
これは、形式を選択して貼り付けとはセルに対して行うものだからです
図形に値のみの貼り付けは存在しません
とはいえ、コピー先をコピーしてモードの終了という流れは全く同じです
あとこのメソッドは「Copy」メソッドと違い、クリップボードを介さない直接貼り付けはできません
なので、コピー元でCopyメソッドを使用してから、対象のセルに貼り付けを実行する必要があります
引数「Paste」には、他にも設定が可能です
Excelでのセルの貼り付け操作時の「形式を選択して貼り付け」が相当するので、そこで指定できる選択肢は全て引数から指定できます