【Excel VBA】コピーとペースト(貼り付け)

Excel マクロ(VBA)

今回は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

コメント

タイトルとURLをコピーしました