今回はExcelのVBAでセルのデータをコピー・ペーストする方法を解説します。特にペーストに関してはコピーしたセルの値を貼り付け、数式を貼り付け、書式を貼り付け等、様々な種類がありますので、それぞれ解説します。
今回は以下の表を使って、11行目のデータをコピーしたりペーストしたりしながら説明します。
セルのデータのコピー
まずはセルのデータをコピーします。コピーは簡単で、Copyメソッドを使います。
Copyメソッド
Copyメソッドはデータを複製するメソッドです。使い方も単純で、例えばC11セルのデータをコピーするとしたら以下のコードで実現可能です。
Cells(11,3).Copy
メソッドとは何か
メソッド(Method)は英語の意味としては”方法”という意味ですが、VBAではオブジェクト(セル・行・列・シート等)に対する”命令”という意味です。VBAでよく出てくる命令の例としては、”追加せよ”、”削除せよ”、”コピーせよ”、”保存せよ”などがあります。
セルのデータの貼り付け
次に、コピーしたデータを別のセルに貼り付けます。貼り付けはPasteSpecialメソッドで実現可能ですが、PasteSpecialメソッドの使い方にはいくつか種類があるので、詳しくは後述します。例えばC11のデータをC15に貼り付ける場合は以下のようなコードになります。
Cells(11,3).Copy
Cells(15,3).PasteSpecial Paste:=”ここに何のデータを貼り付けるかを入力”
すべてのデータを貼り付ける場合
まず、コピーしたデータを全て貼り付ける場合は、引数に”xlPasteAll“を指定し、以下のように記述します。
Cells(15,3).PasteSpecial Paste:=xlPasteAll
このコードでは、コピーしたセルの値・数式・書式・セルの色など、すべてのデータが貼り付けられます。しかし著者の経験上、実務ではすべてのデータを貼り付ける機会よりも、値・数式・書式など、特定のデータのみを貼り付けることの方が多いと感じます。そういったケースでは、以下のコードをお使いください。
一部のデータを貼り付ける場合
値のみを貼り付け(xlPasteValues)
Cells(15,3).PasteSpecial Paste:=xlPasteValues
数式のみを貼り付け (xlPasteFormulas)
Cells(15,3).PasteSpecial Paste:=xlPasteFormulas
書式のみを貼り付け (xlPasteFormats)
Cells(15,3).PasteSpecial Paste:=xlPasteFormats
実行結果
では次に、B13:B18に書いてあるデータを、それぞれC列(1つ左の列)にコピーペーストしてみます。コードは以下の通りです。
Cells(11, 2).Copy
Cells(13, 3).PasteSpecial Paste:=xlPasteAll
Cells(14, 3).PasteSpecial Paste:=xlPasteValues
Cells(15, 3).PasteSpecial Paste:=xlPasteFormats
Cells(11, 3).Copy
Cells(16, 3).PasteSpecial Paste:=xlPasteAll
Cells(17, 3).PasteSpecial Paste:=xlPasteValues
Cells(18, 3).PasteSpecial Paste:=xlPasteFormulas
<実行前>
<実行後>
元々数式の入っていたC11セルのすべて、もしくは数式をコピーしたセルでは、計算元のセルの参照がずれたため、元々の数式の計算結果を異なる結果(0またはエラー)が出ていることがわかります。
行・列・範囲のコピーとペースト
同様に、単一のセルだけではなく列や行、そして特定範囲のコピーペーストも可能です。それぞれ以下の要領で実行可能です。以下の例では、コピー元は単一セル(C11)とし、貼り付け先を列・行・範囲としています。
列への貼り付け
Cells(11, 3).Copy
Rows(行数).PasteSpecial Paste:=xlPasteValues
列への貼り付け
Cells(11, 3).Copy
Columns(列数).PasteSpecial Paste:=xlPasteValues
範囲への貼り付け
Cells(11, 3).Copy
Range(Cells(セル開始位置), Cells(セル終了位置)).PasteSpecial Paste:=xlPasteValues
コメント