【エクセルVBA】コピぺPasteSpecial

投稿者: | 2021年7月12日
excelアイコン

エクセルバージン

マイクロソフト365

 

今回はコピーの貼り付けの形式について色々あるので解説していきたいと思います。

それではいってみましょう!

 

今回できること

コピペの際に使用するエクセルの標準機能にある「形式を選択して貼り付け」と一緒の動作をVBAで実現できます。

形式貼付け

表示方法

下記の手順で「形式を選択して貼り付け」を表示できます。

コピー後 → 右クリック → 形式を選択して貼り付け

貼付け形式

 

PasteSpecialメソッド

Rangeオブジェクト_PasteSpecial

今回はRangeオブジェクトのメンバーであるPasteSpecialメソッドを使用して、コピーしたものを、指定した形式でペースト(貼り付け)します。

構文

PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

戻り値

バリアント型

引数詳細

名前必須/省略可データ型説明
Paste
第1引数
省略可XlPasteType貼り付けの形式(値貼り付けなど)
 (xlPasteAll や xlPasteValues など)
Operation
第2引数
省略可XlPasteSpecialOperation貼り付け操作(加算や減算など) 
(xlPasteSpecialOperationAdd など)。
SkipBlanks
第3引数
省略可Variant既定値は False。
True → コピー元の空白のセルのみ、貼り付け先で貼付けされません。
Transpose
第4引数
省略可Variant既定値は False。
True → 行と列を入替えて貼り付け。

 

XlPasteType(第1引数)

PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

貼り付ける形式を指定できます。

引数を省略した場合は①xlPasteAllが適用されます。

XlPasteType一覧

名前貼付けの形式
xlPasteAll-4104すべて
xlPasteFormulas-4123数式
xlPasteValues-4163
xlPasteFormats-4122書式
xlPasteComments-4144コメントとメモ
xlPasteValidation6入力規則
xlPasteAllUsingSourceTheme13コピー元のテーマで貼付け
xlPasteAllExceptBorders7罫線を除くすべて
xlPasteColumnWidths8列幅
xlPasteFormulasAndNumberFormats11数式と数値の書式
xlPasteValuesAndNumberFormats12値と数値の書式
xlPasteAllMergingConditionalFormats14すべての結合されている条件付き書式

XlPasteTypeダイアログ

VBAサンプル

xlPasteValues

値のみ貼付け

【実行前】

ペースト値のみ実行前

【実行後】

A1セルの値のみが、B1セルにコピペできます\(^^)/

ペースト値のみ実行後

 

※XlPasteType一覧から第1引数の値を変更してあげれば、その他の形式の貼り付けも簡単にできます。

 

XlPasteSpecialOperation(第2引数)

PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

貼り付け先セルを使用して、数値の計算方法を指定できます。

引数を省略した場合は➀xlPasteSpecialOperationNoneが適用されます。

XlPasteSpecialOperation一覧

名前説明
xlPasteSpecialOperationNone-4142貼り付け操作で計算は行われません。
xlPasteSpecialOperationAdd2貼り付け先セルの値に加算。
xlPasteSpecialOperationSubtract3貼り付け先セルの値から減算。
xlPasteSpecialOperationMultiply4貼り付け先セルの値に乗算。
xlPasteSpecialOperationDivide5貼り付け先セルの値を除算。

貼付けダイアログ演算

VBAサンプル

xlPasteSpecialOperationAdd

コピー元の値を貼付け先のセルの値に加算

【実行前】

【実行後】

A1セルの値をコピーして、B1セル貼り付けると加算され20になります(*^^)v

 

※減算、乗算、除算も同じように、第2引数を変更してあげれば簡単にできます。

 

SkipBlanks(第3引数) 空白無視

PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

コピー元の空白のセルのみ、貼付け先で貼付けされません。

空白セル無視貼付け

VBAサンプル

第3引数のSkipBlanks:=Trueを記述します。

SkipBlanks

【実行前】

空白無視実行前

【実行後】

A列の赤のセルのみ、C列に貼り付けされます。

空白無視実行後

 

Transpose(第4引数) 行列入れ替え

PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

行と列を入れ替えして、貼り付けすることができます。

行列入れ替え貼付け

VBAサンプル

Transpose

行と列を入れ替えて貼り付け。

第4引数のTranspose:=Trueを記述します。

【実行前】

行列入れ替え貼付け実行前

【実行後】

列から行にコピペされます(*^^)v

行列入れ替え貼付け実行後

 

まとめ

実際の使用では圧倒的に値貼り付けが多いと思いますが、この機会に第1,2引数の一覧を見て、いろいろな形式のコピペを試してみてくださいね~(^O^)

以上です。

Excel

Excel目次