【マクロVBA】コピー&ペースト全集!セル・指定範囲・行・列のコピーと様々な貼り付け方法

セル操作

今回はコピー&ペースト(貼り付け)について紹介します。
対象セルや、複数範囲、行、列のコピー方法や、値や数式の貼り付けなど様々な貼り付けの方法についてまとめてます。

通常の作業で使用するコピペをVBAでも行えるようになるので是非参考にしてみて下さい。

それでは見ていきましょう。




⬛︎コピーする

まずはコピーについてです。

コピーの構造はシンプルで

コピーしたい範囲.Copy


で完結します。

では、それぞれの場面でのコピー方法を見ていきましょう。

・指定セルのコピーをする

まず、1つの指定したセルをコピーする方法を紹介します。

セルの選択はRangeまたはCells でしたよね。
では「コピーしたい範囲.Copy」に当てはめてみましょう。

セル番地B5であれば

Range(“B5”).CopyまたはCells(5, 2).Copyになります。

では下図をご覧ください。

「C3」に入力されている文字をコピーしてみましょう。

プログラムはこのようになります。

Sub 指定セルのコピー()

Cells(3, 3).Copy

End Sub

実行した結果を見てみましょう。

コピーした部分が点線の枠で囲われており、指定位置をコピーした事がわかりますね。

・複数範囲をコピーする

次に複数範囲をコピーする方法についてです。
こちらは先程とあまり変わりません。

例でC5からD8までをコピーするプログラムを見てみましょう。

Sub 複数範囲のコピー()

Range(“C5:D8“).Copy

End Sub

実行した結果はこのようになります。

範囲指定した部分が点線の枠で囲われており、コピーした事がわかりますね。

・行のコピーをする

今度は行のコピーについてです。
行はRows(コピーしたい行数).Copyで選択します。

では見本を見てみましょう。

今回は5行目をコピーしてみましょう。

プログラムはこのようになります。

Sub 複数範囲のコピー()

Rows(5).Copy

End Sub

実行した結果はこちらです。

5行目が点線の枠で囲われており、コピーした事がわかりますね

・列のコピーをする

最後に列のコピーについてです。
列はColumns(コピーしたい列数).Copyで選択します。

では見本を見てみましょう。

今回は4列目のD列をコピーしてみましょう。

プログラムはこのようになります。

Sub 複数範囲のコピー()

Columns(4).Copy

End Sub

実行した結果はこちらです。

4列目のD列が点線の枠で囲われており、コピーした事がわかりますね

⬛︎コピーした結果を貼り付ける

先ほどはコピーの方法を紹介しました。
今度はコピーした後の貼り付けの方法を紹介します。

貼り付けの構造は下記の通りです。

貼り付け位置.PasteSpecial Paste:=貼り付け内容,Operation:=演算内容,SkipBlanks:=True Or False,Transpose:=True Or False)
※PasteSpecial以降は省略可

 

各貼り付けのオプションを下の表にまとめました。

内容No形式詳細
PastexlpasteAllすべて
xlpasteFormulas数式
xlPasteValues
xlpasteFormats書式
xlpasteCommentsコメント
xlPasteValidation入力規則
xlPasteAllUsingSourceThemeコピー元のテーマを使用してすべて貼り付け
xlPasteAllExceptBorders罫線を除くすべて
xlpasteColumnWidths列幅
xlpasteFormulasAndNumberFormats数式と数値の書式
xlPasteValuesAndNumberFormats値と数値の書式
xlPasteAllMergingConditionalFormatsすべて結合されている条件付き書式
OperationxlPasteSpecialOperationNoneしない
xlPasteSpecialOperationAdd加算
xlPasteSpecialOperationSubtract減算
xlPasteSpecialOperationMultiply乗算
xlPasteSpecialOperationDivide除算
SkipBlanksTrue空白セルを無視する
False空白セルをしない
TransposeTrue行列を入れ替える
False行列を入れ替えない

では例を見てみましょう。

数値のみ貼り付けするときは…
貼り付け位置.PasteSpecial Paste:=xlPasteValues

コメントの貼り付けと行列を入れ替えるときは…
貼り付け位置.PasteSpecial Paste:=xlpasteComments, Transpose:=True

それぞれの貼り付け方法の意味は通常の貼り付けの記事でまとめてますので、下記リンクにてご覧ください。

貼り付けの記事についてはこちらから☟

【様々な貼り付け】値の貼り付け・行と列を入れ替えて貼り付ける方法などのオプション一覧 ► 独学エクセル塾 (dokugakuexcel.com)

では見本を見てみましょう。

例でC5からD8までのデータをコピーして貼り付けたいと思います。

F5には数値のみ貼り付けをしますが、I5にはすべて貼り付け行列の入れ替えで貼り付けたいと思います。

プログラムはこのようになります。

Sub コピーペースト()

Range(“C5:D8“).Copy

Range(“F5“).PasteSpecial Paste:=xlPasteValues ‘数値のみ貼り付け

Range(“I5“).PasteSpecial Paste:=xlPasteAll, Transpose:=True ‘全て貼り付け & 行列の入れ替え

End Sub

実行した結果はこちら。

狙い通り貼り付ける事ができました。

⬛︎コピー&ペーストを複数回行う場合

コピー&ペーストはとても使用頻度が高いですが、複数回行う場合は少し手間ですよね。

そんな時は配列の仕組みが役立ちます。

イメージで言うと、データをまとめて記録して一気に貼り付ける感じです。

この内容は別の記事で紹介してますので、参考にしてみて下さい。

【マクロVBA】複数の繰り返しのコピー&ペーストが面倒くさい!?高速で一括で貼り付けできる配列とは ► 独学エクセル塾 (dokugakuexcel.com)

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Range.Copy メソッド (Excel) | Microsoft Learn

Range.PasteSpecial メソッド (Excel) | Microsoft Learn

⬛︎まとめ

いかがだったでしょうか。
よく使うコピペが自動で行えるのはとても便利ですよね。
コピペの位置が決まっており、毎回人が作業している場合は自動化もできそうですね。

是非、今回の記事を参考にして活用してみてください。

それでは次回の記事でお会いしましょう。

コメント