今回はセルのコピーとペーストの方法です。
セルのコピーには「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 |
入力規則 | xlPasteValidation | 6 |
罫線を除く全て | xlPasteAllExceptBorders | 7 |
列幅 | xlPasteColumnWidths | 8 |
数式と数値の書式 | xlPasteFormulasAndNumberFormats | 11 |
値と数値の書式 | xlPasteValuesAndNumberFormats | 12 |
コピー元のテーマを使用してすべて貼り付け | xlPasteAllUsingSourceTheme | 13 |
すべての結合されている条件付き書式 | xlPasteAllMergingConditionalFormats | 14 |
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 |
加算 | xlPasteSpecialOperationAdd | 2 |
減算 | xlPasteSpecialOperationSubtract | 3 |
乗算 | xlPasteSpecialOperationMultiply | 4 |
除算 | xlPasteSpecialOperationDivide | 5 |
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
