セルについて

セルのコピーと貼り付け

 セルの値をほかのセルにコピーするには「Copyメソッド」と「Pasteメソッド」を使います。

つまり、「Copyメソッド」でセルの内容をクリップボードにコピーし、「Pasteメソッド」でクリップボードの内容をセルに貼り付けます。

この表をコピーして、9行目に貼り付けるマクロです。

Sub コピペ_01()

  Range(“B2:D6”).Copy ‘①

  Range(“B9”).Select ‘②

  ActiveSheet.Paste ‘③

  Application.CutCopyMode = False ‘④

End Sub

① 表をクリップボードにコピーします。

② 貼り付け先の先頭のセルを選択します。

③ クリップボードの内容を貼り付けます。

④ コピーモードを解除します。

結果は

ペースト(貼り付け)が②と③の2行になっています。

Range(“B9”).Paste

でもよさそうですが、このようにするとエラーになります。

Pasteメソッドは Worksheet オブジェクトを対象としているため、セルへの直接の貼り付けはできないためです。


今度は同表を右側のセル F2 に貼り付けることにします。

Sub コピペ_02()

  Range(“B2:D6”).Copy

  Range(“F2”).Select ‘①

  ActiveSheet.Paste

  Application.CutCopyMode = False

End Sub

結果は

内容のコピペはできていますが、列幅が反映されていません。

貼り付ける形式を含めて貼り付けるには「PasteSpecialメソッド」を使います。

Sub コピペ_3()

  Range(“B2:D6”).Copy

  Range(“F2”).PasteSpecial Paste:= _

xlPasteColumnWidths ‘①

  Range(“F2”).PasteSpecial Paste:= _

xlPasteAll ‘②

  Application.CutCopyMode = False

End Sub

① 列幅をペーストします。

② 列幅を除くすべての規定値(値や書式等)をペーストします。

※ ①と②は順番が入れ替わっても結果は同じです。

よって結果は

更に今度は Sheet1にあるこの表を、Sheet2の同じセル B2を先頭に貼り付けるマクロです。

Sub コピペ_03()

  Range(“B2:D6”).Copy ‘①

  Sheets(“Sheet2”).Select ‘②

  Range(“B2”).PasteSpecial Paste:=xlPasteColumnWidths ‘③

  Range(“B2”).PasteSpecial Paste:=xlPasteAll ‘④

  Application.CutCopyMode = False

End Sub

① Sheets(“Sheet1”).Range(“B2:D6”).Copy

  Sheet1がアクティブの状態であれば「Sheets(“Sheet1”).」が省略できます。

② Sheet2 を選択します(アクティブ)。

③④ で列幅を含めすべて貼り付けます。

Sheet2 をアクティブにする以外、基本的に何も変わりません。

貼り付ける内容(PasteSpecialの引数)

定数内容
xlPasteAllすべて(規定値)
xlPasteAllExceptBorders罫線を除くすべて
xlPasteColumnWidths列幅
xlPasteCommentsコメント
xlPasteFormats書式
xlPasteFormulas数式
xlPasteFormulasAndNumberFormats数式と数値の書式
xlPasteValidation入力規則
xlPasteValues
xlPasteValuesAndNumberFormats値と数値の書式

 今までは「Copyメソッド」で一旦クリップボードにコピーして、それを貼り付けていました。

今から別途、クリップボードを経由しないでコピペする方法を解説します。

 Copyメソッドに引数「Destination」を使って貼り付け先を指定する方法です。

これにより、クリップボードを経由することなく直接コピペすることができます。

Sub コピペ_04()

  Range(“B2:D6”).Copy Destination:=Range(“B8”)

End Sub

セルと行・列の追加と削除  指定したセルの範囲に新たに、セルを挿入したり削除したり、さらに行や列自体を挿入したり削除したりする方法ついてVBAでどのように記載す...
セルの行・列番号と参照  指定したセルの行番号と列番号を知るには「Rowプロパティ」「Columnプロパティ」を使って数値で知ることができます。  複数...