Excel VBA セルのコピー、ペーストする方法

ExcelVBA-基礎編

今回はセルのコピーとペーストの方法です。

セルのコピーには「Copy」メソッド、ペーストには「Pastespecial メソッド」を使用します

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

1.CopyとPastespecialの使い方

簡単に「Copy」と「Pastespecial」の使い方をご説明します。

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

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

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

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

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

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

貼り付ける形式一覧

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

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

[quads id=1]

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

3.演算して貼り付ける

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

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

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

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

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

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

演算の定数一覧

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

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

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

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

「 SkipBlanks 」は省略可能です。

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

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

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

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

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

「Transpose」は省略可能です。

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

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