Copy メソッド
セルの値・数式・書式などを単純にコピー&ペーストするには Copy メソッドを使用します。Copy メソッドの引数としてコピー先のセルまたはレンジを指定すると、そこへ貼り付けることができます。
構文
object.Copy [Destination]※objectはセルまたはレンジオブジェクトを表す変数
| 引数名 | 省略 | 説明 |
|---|---|---|
| Destination | ○ | コピー先のセル範囲を指定します。この引数を省略すると、クリップボードにコピーされます。 |
以下のサンプルマクロは、B3~B13の範囲にあるセルの値や書式などすべてをC3~D13へコピーします。コピー先のセル範囲の方が多いのでその分複製されるのがポイントです。
Sub sample6_33()
'コピー&ペースト
Range("B3:B13").Copy Range("C3:D13")
End Sub


PasteSpcial メソッド
Copy メソッドの引数を省略すると、コピーした内容はクリップボードへ退避されます。その後PasteSpcial メソッドを使用すると様々な貼り付け方が可能になります。
構文
object.PasteSpecial [Paste] [, Operation] [, SkipBlanks] [, Transpose]
| 引数名 | 省略 | 定数 | 説明 |
|---|---|---|---|
| Paste | ○ | xlPasteAll | すべてを貼り付けます。 |
| xlPasteAllExceptBorders | 輪郭以外のすべてを貼り付けます。 | ||
| xlPasteAllUsingSourceTheme | テーマを使用してすべてを貼り付けます。 | ||
| xlPasteColumnWidths | 列幅を貼り付けます。 | ||
| xlPasteComments | コメントを貼り付けます。 | ||
| xlPasteFormats | 書式を貼り付けます。 | ||
| xlPasteFormulas | 数式を貼り付けます。 | ||
| xlPasteFormulasAndNumberFormats | 数式と数値の書式を貼り付けます。 | ||
| xlPasteValidation | 入力規則を貼り付けます。 | ||
| xlPasteValues | 値を貼り付けます。 | ||
| xlPasteValuesAndNumberFormats | 値と数値の書式を貼り付けます。 | ||
| Operation | ○ | xlPasteSpecialOperationAdd | コピーしたデータは、対象セルの値に加算されます。 |
| xlPasteSpecialOperationDivide | コピーしたデータは、対象セルの値によって除算されます。 | ||
| xlPasteSpecialOperationMultiply | コピーしたデータには、対象セルの値に乗算されます。 | ||
| xlPasteSpecialOperationNone | 貼り付け操作で計算は行われません。 | ||
| xlPasteSpecialOperationSubtract | コピーしたデータは、対象セルの値が減算されます。 | ||
| SkipBlanks | ○ | True / False(規定値) | 空白のセルを貼り付けの対象にしないようにするには、True を指定します。 |
| Transpose | ○ | True / False(規定値) | データの行と列を入れ替えるには、True を指定します。 |
次のサンプルマクロは PasteSpecial メソッドで書式のみをコピーする例です。
Sub sample6_34()
'クリップボードへコピー
Range("B3:B13").Copy
'書式だけを貼り付け
Range("C3:D13").PasteSpecial xlPasteFormats
End Sub


Insert メソッド
空のセルを挿入またはコピーしたセルを挿入する場合は Insert メソッドを使用します。引数として右または下のどちらへセルをシフトさせるかを指定します。この引数を省略すると、セル範囲の形に適した方向にシフトされます。
構文
object.Insert [Shift]
| 引数名 | 省略 | 定数 | 説明 |
|---|---|---|---|
| Shift | ○ | xlShiftToRight | セルを右方向へシフトする |
| xlShiftDown | セルを下方向へシフトする |
Insertメソッドの使用例
次のサンプルマクロは単純にセルを挿入する例です。挿入箇所にはエクセルが自動的に書式を補完しています。
Sub sample6_35()
'空のセルを挿入(右方向へシフト)
Range("C3:C13").Insert xlShiftToRight
End Sub


Insertメソッドの使用例(Copy メソッド実行後)
Copy メソッド実行後に、Insert メソッドを使用すると、コピーしたデータを挿入することができます。
sample6_36()
'クリップボードへコピー
Range("B3:B13").Copy
'コピーしたセルを挿入
Range("C3:C13").Insert xlShiftToRight
End Sub


Delete メソッド
セルを削除したい場合は Delete メソッドを使用します。引数として左または上のどちらへセルをシフトさせるかを指定します。この引数を省略すると、セル範囲の形に適した方向にシフトされます。
構文
object.Delete [Shift]
| 引数名 | 省略 | 定数 | 説明 |
|---|---|---|---|
| Shift | ○ | xlShiftToLeft | セルを左方向へシフトする |
| xlShiftUp | セルを上方向へシフトする |
次のサンプルマクロはセルを削除し、左方向へシフトさせて削除部分を穴埋めする例です。
Sub sample6_37()
'セルを削除(左方向へシフト)
Range("B3:B13").Delete xlShiftToLeft
End Sub

