大昔、VBA を始めた頃に、「マクロ記録」を利用していた名残なのか
コピーのときは、コピーしてペースト、というコードを書いてしまう癖があるな~。
でも、本当は、ただの貼り付けなら1行なのよね。
なので、今更ながら、まとめてみる。
【環境】
Excel: 2010
書式
[evba language=”vb” firstline=”” highlight=””]
‘ Range.Copy メソッド
式.Copy(Destination)
‘ Range.Cut メソッド
式.Cut(Destination)
[/evba]
- Destination
- オプション
- バリアント型 (Variant)
- コピー先のセル範囲。この引数を省略すると、クリップボードにコピーされます。
- 戻り値
- バリアント型 (Variant)
例
[evba language=”vb” firstline=”” highlight=””]
Worksheets(“Sheet1”).Range(“A1:D4”).Copy _
destination:=Worksheets(“Sheet2”).Range(“E5”)
[/evba]
貼り付け
Paste
クリップボードの内容をオブジェクトに転送します。
[evba language=”vb” firstline=”” highlight=””]
object.Paste
[/evba]
例
[evba language=”vb” firstline=”” highlight=””]
Worksheets(“Sheet2”).Range(“E5”).Paste
[/evba]
PasteSpecial
Range をクリップボードから指定範囲に貼り付けます。
[evba language=”vb” firstline=”” highlight=””]
式.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
[/evba]
- Paste
- オプション
- XlPasteType
- 範囲の中で貼り付ける部分を指定します。
- Operation
- オプション
- XlPasteSpecialOperation
- 貼り付けの操作を指定します。
- SkipBlanks
- オプション
- バリアント型 (Variant)
- クリップボードに含まれる空白のセルを貼り付けの対象にしないようにするには、True を指定します。既定値は False です。
- Transpose
- オプション
- バリアント型 (Variant)
- 貼り付けのときにデータの行と列を入れ替えるには、True を指定します。既定値は False です。
XlPasteType
名前 |
値 |
説明 |
xlPasteAll |
-4104 |
すべてを貼り付けます。 |
xlPasteAllExceptBorders |
7 |
輪郭以外のすべてを貼り付けます。 |
xlPasteAllMergingConditionalFormats |
14 |
すべてを貼り付け、条件付き書式をマージします。 |
xlPasteAllUsingSourceTheme |
13 |
ソースのテーマを使用してすべてを貼り付けます。 |
xlPasteColumnWidths |
8 |
コピーした列の幅を貼り付けます。 |
xlPasteComments |
-4144 |
コメントを貼り付けます。 |
xlPasteFormats |
-4122 |
コピーしたソースの形式を貼り付けます。 |
xlPasteFormulas |
-4123 |
数式を貼り付けます。 |
xlPasteFormulasAndNumberFormats |
11 |
数式と数値の書式を貼り付けます。 |
xlPasteValidation |
6 |
入力規則を貼り付けます。 |
xlPasteValues |
-4163 |
値を貼り付けます。 |
xlPasteValuesAndNumberFormats |
12 |
値と数値の書式を貼り付けます。 |
XlPasteSpecialOperation
名前 |
値 |
説明 |
xlPasteSpecialOperationAdd |
2 |
コピーしたデータは、対象セルの値に追加されます。 |
xlPasteSpecialOperationDivide |
5 |
コピーしたデータは、対象セルの値によって分割されます。 |
xlPasteSpecialOperationMultiply |
4 |
コピーしたデータには、対象セルの値が掛けられます。 |
xlPasteSpecialOperationNone |
-4142 |
貼り付け操作で計算は行われません。 |
例
[evba language=”vb” firstline=”” highlight=””]
With Worksheets(“Sheet1”)
.Range(“C1:C5”).Copy
.Range(“D1:D5”).PasteSpecial _
Operation:=xlPasteSpecialOperationAdd
End With
[/evba]