今回はコピー&ペースト(貼り付け)について紹介します。
対象セルや、複数範囲、行、列のコピー方法や、値や数式の貼り付けなど様々な貼り付けの方法についてまとめてます。
通常の作業で使用するコピペを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 | 形式 | 詳細 |
---|---|---|---|
Paste | ① | xlpasteAll | すべて |
② | xlpasteFormulas | 数式 | |
③ | xlPasteValues | 値 | |
④ | xlpasteFormats | 書式 | |
⑤ | xlpasteComments | コメント | |
⑥ | xlPasteValidation | 入力規則 | |
⑦ | xlPasteAllUsingSourceTheme | コピー元のテーマを使用してすべて貼り付け | |
⑧ | xlPasteAllExceptBorders | 罫線を除くすべて | |
⑨ | xlpasteColumnWidths | 列幅 | |
⑩ | xlpasteFormulasAndNumberFormats | 数式と数値の書式 | |
⑪ | xlPasteValuesAndNumberFormats | 値と数値の書式 | |
⑫ | xlPasteAllMergingConditionalFormats | すべて結合されている条件付き書式 | |
Operation | ⑬ | xlPasteSpecialOperationNone | しない |
⑭ | xlPasteSpecialOperationAdd | 加算 | |
⑮ | xlPasteSpecialOperationSubtract | 減算 | |
⑯ | xlPasteSpecialOperationMultiply | 乗算 | |
⑰ | xlPasteSpecialOperationDivide | 除算 | |
SkipBlanks | ⑱ | True | 空白セルを無視する |
⑲ | False | 空白セルをしない | |
Transpose | ⑳ | True | 行列を入れ替える |
㉑ | 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
⬛︎まとめ
いかがだったでしょうか。
よく使うコピペが自動で行えるのはとても便利ですよね。
コピペの位置が決まっており、毎回人が作業している場合は自動化もできそうですね。
是非、今回の記事を参考にして活用してみてください。
それでは次回の記事でお会いしましょう。