Categories: VBA

VBAでセルをコピーする│セル・値だけ・書式をコピーする方法

この記事では、VBAを使ってセルセルの値だけ書式をコピーする方法を実際のVBAコードも含めて説明します。

セルのコピーは、日常的なExcelの業務でも多用するようにVBAの基本的動作のひとつです。

セルセルの値だけ、書式、それぞれをセルからコピーするためのVBAコードを紹介しますので、ご参考になれば幸いです。

セルのコピーについては、変数を使いません。疑問に感じる方がいらっしゃるかもしれませんが、VBAのコピーの操作は実際に人間が行うそれと同様です。つまり、パソコンのクリップボードを使うため、変数は不要なのです。

VBA│セルをコピーする

この章では、ExcelのセルA1をコピーしてセルB1に貼り付けるVBAコードを紹介します。Excelで日常的に行っている「Ctrl + C」と同等の結果を返すVBAコードです。

基本構文

object . Copy Destination:=object

  • object = コピー対象のセル位置
    この例では、A1です
  • Copy = コピーする定型文
  • Destination : = Copyメソッドの引数
  • object = ペースト対象のセル位置
    この例では、B1です

Destination:= は省略可能です。( Destination:= が入力されたものとしてみなされる)

Rangeプロパティ

Sub Sample()

Range(“A1”).Copy Destination:=Range(“B1”)

End Sub

Cellsプロパティ

Sub Sample()

Cells( 1, 1 ).Copy Destination:=Cells ( 1, 2 )

End Sub

VBA│セルの値だけコピーする

この章では、ExcelのセルA1の値だけコピーして、セルB1に貼り付けるVBAコードを紹介します。Excelで使う「値貼り付け」と同等の結果を返すVBAコードです。

基本構文

object . Value object . Value

  • object = ペースト対象のセル位置
    この例では、B1です
  • Value = ペーストする定型文
    (Valueは値を代入するプロパティです)
  • object = コピー対象のセル位置
    この例では、A1です
  • Value = コピーする定型文

Value省略可能です。( Value が入力されたものとしてみなされる)

Rangeプロパティ

Sub Sample()

Range(“B1”).Value = Range(“A1”).Value

End Sub

Cellsプロパティ

Sub Sample()

Cells( 1, 2 ).Value = Cells( 1, 1 ).Value

End Sub

VBA│セルの書式だけコピーする

この章では、ExcelのセルA1の書式だけコピーして、セルB1に貼り付けるVBAコードを紹介します。Excelで使う「書式貼り付け」と同等の結果を返すVBAコードです。

基本構文

その1_PasteSpecial

object . PasteSpecial

  • object = ペースト対象のセル位置
    この例では、B1です
  • PasteSpecial = 形式を選択して貼り付けるメソッド

その2_NumberFormat

object . NumberFormat = object . NumberFormat

  • object = コピー・ペースト対象のセル位置
    この例では、A1・B1です
  • NumberFormat = 表示形式を表すプロパティ

Rangeプロパティ

PasteSpecial

Sub Sample()

Range(“A1”).Copy
Range(“B1”).PasteSpecial Paste: = xlPasteFormats

End Sub

NumberFormat

Sub Sample()

Range(“B1”).NumberFormat = Range(“A1”).NumberFormat

End Sub

Cellsプロパティ

PasteSpecial

Sub Sample()

Cells( 1, 1 ).Copy
Cells( 1, 2 ).PasteSpecial Paste: = xlPasteFormats

End Sub

NumberFormat

Sub Sample()

Cells( 1, 2 ) .NumberFormat = Cells( 1, 1 ) .NumberFormat

End Sub

応用編:最終行を変数で取得しコピーする

最終行のセルをコピーする

前節までは、コピー対象のセルをすべてVBAコード内で、直接、指定していましたが、VBA最終行を取得するコードと組み合わせて、B列の最終行のセルをVBAでコピーする実用的なコードを記述してみましょう。

B列最終行のセルをコピーしたあとは、セルD1に貼り付けます。

Sub Sample()

Dim LastRow As Long

LastRow = Range(“B1”).End(xlDown).Row
Range(“B” & LastRow).Copy Destination:=Range(“D1”)


End Sub

まず、対象の列からデータの最終行を取得し変数 LastRow に代入しています。次に、変数 LastRow と文字「B」を組み合わせて最後のセルを指定しています。(この例では、B11となります)

Webs

元事務処理担当者として、プログラミングを活用した業務改善を推進している。プログラマ出身ではない事務職の現場目線で情報を発信。 その他、webs-studio.jpをメインに、複数のブログサイトを立ち上げており、合計で月間10万PVのメディア運営を行っている。 姉妹サイト一覧