Excel VBA セルのコピー、ペースト(貼り付け)する方法

ExcelVBA-基礎編

セルのコピーとペーストについて説明です。

VBAでExcelを扱う際にコピー、ペーストはとても使用頻度が高いです。

コピーとペーストはセットで使用する事が多いので、セットで覚えましょう。

コピーの方法

記述方法

セルのコピーは「Copy」メソッドを使用します。

基本的に「Copy」メソッドでコピーして、 「Pastespecial 」メソッドで貼り付け方法を指定して貼り付けます。

範囲コピーするには「Range(“A1:J5”).Copy」「Range(Cells(1, 1), Cells(5, 10)).Copy」と記述します。

サンプルコード

単体のセルのコピーは下記の様に記述します。

Range("A1").Copy
Cells(1, 1).Copy

範囲をコピーするには下記の様に記述します。

Range("A1:J5").Copy
Range(Cells(1, 1), Cells(5, 10)).Copy

貼り付けの方法

記述方法

セルのペーストは「Pastespecial メソッド」を使用します。

定数を省略すると「すべて貼り付け」となります。

詳細な書式を指定して貼り付ける場合には、定数を指定して貼り付けをします。

サンプルコード

コピーしたデータを単一セルへ貼り付けるには下記の様に記述します 。

Range("B1").PasteSpecial
Cells(1, 2).PasteSpecial

コピーしたデータを複数セルへ貼り付けるには下記の様に記述します 。

Range("A10:J15").PasteSpecial
Range(Cells(1, 10), Cells(15, 10)).PasteSpecial

書式を指定して貼り付ける

コピーしたデータは「値のみ」や「数式」、「書式のみ」など貼り付ける形式を指定して貼り付けることが出来ます。

形式を指定して貼り付けるには「Pasteメソッド」を使用します。

形式を指定した貼り付け方法は次のように記述します。

Range("A1").PasteSpecial Paste:=xlPasteValues   '値のみ貼り付け
Range("A1").PasteSpecial Paste:=xlPasteAll      'すべて貼り付け
Range("A1").PasteSpecial Paste:=xlPasteFormats  '書式のみ貼り付け

貼り付ける形式一覧

貼り付ける形式を指定する定数の一覧です。

Paste:=」の後ろに次の定数を指定することで形式を指定した貼り付けが可能です。

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

演算して貼り付ける

数値をコピーペーストする際に、値を加算や除算などの演算を加えて貼り付けする事が可能です。

演算をして貼り付けるには引数の「Operation」に次の定数を指定します。

引数「Operation」は省略可能です。

演算する場合は次のように記述します。

サンプルコード

cells(1,1)に10を入力して、コピーし、Cells(1,2)に加算貼り付けします。

Cells(1, 1) = 10
Cells(1, 1).Copy
Cells(1, 2).PasteSpecial Paste:=xlPasteAll, Operation:=xlPasteSpecialOperationAdd

演算の定数一覧

演算定数数値
しないxlPasteSpecialOperationNone-4142
加算xlPasteSpecialOperationAdd2
減算xlPasteSpecialOperationSubtract3
乗算xlPasteSpecialOperationMultiply4
除算xlPasteSpecialOperationDivide5

空白を無視して貼り付ける

セル範囲をまとめてコピーして、範囲を貼り付ける場合は空白を無視して貼り付ける事が出来ます。

空白を無視して貼り付ける場合は「SkipBlanks:=True」と指定します。

SkipBlanks 」は省略可能です。

サンプルコード

コードは次のように記述します。

Range(Cells(1, 1), Cells(5, 10)).Copy

Cells(10, 1).PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True

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

コピーした範囲の行と列を入れ替えて貼り付ける場合は、「Transpose:=True」と指定します。

Transpose」は省略可能です。

サンプルコード

Range(Cells(1, 1), Cells(5, 3)).Copy

Cells(7, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True
タイトルとURLをコピーしました