「形式を選択して貼り付け」を VBA コードで

Paste Special メソッド
Paste Special メソッド

3行マクロ 70回Paste Special メソッド

Paste Special メソッド 形式を選択して貼り付け

式だけコピーしたい時、 あるいは列幅をコピーしたい時と様々な コピーの対象があります。 通常のコピーをそっくり全部するコピーとした場合のほかのコピーは 特別なコピーです。 VBA では Paste Special メソッドと言います。 普段ワークシート上で行う右クリックやリボンからの「形式を選択して貼り付け」を VBA コードでどのように マクロにするかと言う 説明をさせていただきます。


(サンプルファイルは、こちらから 3行マクロ19回サンプルデータ

Copyメソッドの引数

Copy メソッドの引数 destination を使った場合には、データは直接、 貼り付け先にコピーされてしまうので、クリップボードを経由しません。 ですからわざわざ Application.CutCopyMode = false を書いてやる必要はありません。


特別なデータのコピーPasteSpecialマクロ1

列幅をコピーするにはPaste Special メソッド

Range.PasteSpecialメソッド
PasteSpecial (貼り付け、 操作、 SkipBlanks、 Transpose)

名前 データ型 説明
Paste XlPasteType 貼り付ける範囲の部分 (xlPasteAllやxlPasteValuesなど)。
操作名 XlPasteSpecialOperation xlPasteSpecialOperationAddなどの貼り付け操作。
SkipBlanks バリアント型 True を指定すると、クリップボードの範囲内の空白セルがコピー先の範囲に貼り付けされません。 既定値はFalseです。
Transpose バリアント型 範囲を貼り付けるときに行と列を入れ替える場合は True。 既定値はFalseです。

列幅をコピーするには 、Paste Special メソッドの xlPasteColumnWidthsを使います。


特別なデータのコピーPasteSpecialマクロ2
Sub コピー転記列幅6()
    ActiveCell.CurrentRegion.Copy
    ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteAll
    Selection.PasteSpecial Paste:=xlPasteColumnWidths
    Application.CutCopyMode = False
End Sub

書式をコピーするには 、Paste Special メソッドの xlPasteFormatsを使います。


特別なデータのコピーPasteSpecialマクロ3
Sub コピー転記書式7()
    ActiveCell.CurrentRegion.Copy
    ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteFormats
    Selection.PasteSpecial Paste:=xlPasteColumnWidths
    Application.CutCopyMode = False
End Sub

数式をコピーするには 、Paste Special メソッドの xlPasteFormulasを使います


特別なデータのコピーPasteSpecialマクロ5
Sub コピー転記数式8()
    ActiveCell.CurrentRegion.Copy
    ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteFormulas
    Application.CutCopyMode = False
End Sub

値だけの場合には、Paste Special メソッドの xlPasteValuesを使います


特別なデータのコピーPasteSpecialマクロ10
Sub コピー転記値9()
    ActiveCell.CurrentRegion.Copy
    ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteValues
    Selection.PasteSpecial Paste:=xlPasteColumnWidths
    Application.CutCopyMode = False
End Sub

Paste Special メソッドのコードを実行すると

こちらは全部コピーと列幅もコピーする例です。


特別なデータのコピーPasteSpecialマクロ6

こちらは書式と列幅をコピーした例です。


特別なデータのコピーPasteSpecialマクロ7

こちらは書式と列幅をコピーした例です。


特別なデータのコピーPasteSpecialマクロ8

こちらは値だけをコピーしたケースです。 合計欄にカーソルを 持って行っても 数式は表示されるず、値だけが表示されます。


特別なデータのコピーPasteSpecialマクロ9