「形式を選択して貼り付け」を VBA コードで
3行マクロ 70回Paste Special メソッド
Paste Special メソッド 形式を選択して貼り付け
式だけコピーしたい時、 あるいは列幅をコピーしたい時と様々な コピーの対象があります。
通常のコピーをそっくり全部するコピーとした場合のほかのコピーは 特別なコピーです。 VBA では Paste Special メソッドと言います。
普段ワークシート上で行う右クリックやリボンからの「形式を選択して貼り付け」を VBA コードでどのように マクロにするかと言う 説明をさせていただきます。
(サンプルファイルは、こちらから 3行マクロ19回サンプルデータ)
Copyメソッドの引数
Copy メソッドの引数 destination を使った場合には、データは直接、 貼り付け先にコピーされてしまうので、クリップボードを経由しません。 ですからわざわざ Application.CutCopyMode = false を書いてやる必要はありません。
列幅をコピーするにはPaste Special メソッド
Range.PasteSpecialメソッド
PasteSpecial (貼り付け、 操作、 SkipBlanks、 Transpose)
名前 | データ型 | 説明 |
---|---|---|
Paste | XlPasteType | 貼り付ける範囲の部分 (xlPasteAllやxlPasteValuesなど)。 |
操作名 | XlPasteSpecialOperation | xlPasteSpecialOperationAddなどの貼り付け操作。 |
SkipBlanks | バリアント型 | True を指定すると、クリップボードの範囲内の空白セルがコピー先の範囲に貼り付けされません。 既定値はFalseです。 |
Transpose | バリアント型 | 範囲を貼り付けるときに行と列を入れ替える場合は True。 既定値はFalseです。 |
列幅をコピーするには 、Paste Special メソッドの xlPasteColumnWidthsを使います。
Sub コピー転記列幅6() ActiveCell.CurrentRegion.Copy ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteAll Selection.PasteSpecial Paste:=xlPasteColumnWidths Application.CutCopyMode = False End Sub
書式をコピーするには 、Paste Special メソッドの xlPasteFormatsを使います。
Sub コピー転記書式7() ActiveCell.CurrentRegion.Copy ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteFormats Selection.PasteSpecial Paste:=xlPasteColumnWidths Application.CutCopyMode = False End Sub
数式をコピーするには 、Paste Special メソッドの xlPasteFormulasを使います
Sub コピー転記数式8() ActiveCell.CurrentRegion.Copy ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteFormulas Application.CutCopyMode = False End Sub
値だけの場合には、Paste Special メソッドの xlPasteValuesを使います
Sub コピー転記値9() ActiveCell.CurrentRegion.Copy ActiveCell.Offset(0, 7).PasteSpecial Paste:=xlPasteValues Selection.PasteSpecial Paste:=xlPasteColumnWidths Application.CutCopyMode = False End Sub
Paste Special メソッドのコードを実行すると
こちらは全部コピーと列幅もコピーする例です。
こちらは書式と列幅をコピーした例です。
こちらは書式と列幅をコピーした例です。
こちらは値だけをコピーしたケースです。 合計欄にカーソルを 持って行っても 数式は表示されるず、値だけが表示されます。