【Excel VBA】対象範囲をコピーして貼り付ける

Excel

今回は、Excel VBAで対象範囲をコピーして貼り付ける方法についてです。

これを実行するVBAコードについて、解説していきます。

本記事のポイントおよびキーワード

✔ 対象範囲をコピーして貼り付ける
✔ 使えると結構便利!
✔ 使用するメソッドなどは以下
・Rangeオブジェクト
・Copyメソッド
・Withステートメント

本記事は、基本的な構文の詳しい説明は省略しています

概要

具体的なExcelのイメージを示すと、↓のような感じです。

AB列に入っている文字を全部コピーして、CD列に張り付けるという動作を実行させます。

画像1

VBAコードの流れ

処理を実行するVBAコードの流れは、以下の3ステップです。

1.最終行を取得
2.A1セルからB列の最終行までの範囲をコピー
3.C1から貼り付け

全体のコード

実際の全体コードはこちらです。

Sub 対象領域をコピーして貼り付ける()
    Dim lastrow As Integer
        With Worksheets("Sheet1")
         lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
         .Range(Cells(1, 1), Cells(lastrow, 2)).Copy
         .Cells(1, 3).PasteSpecial Paste:=xlPasteValues
        End With
    Application.CutCopyMode = False
End Sub

コードの解説

では、コード内容を説明します。

最終行を取得

最初に、入力されている最終行の行番号取得をします。

Dim lastrow As Integer
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row

なお、今回のコードでは、Withステートメントを使用しました。

~においてという意味を示します。下記の場合、Worksheets(“Sheet1”)においてという意味になります。

これによって、「.Range~」などのように、Worksheets(“Sheet1”)を省略して、.(ピリオド)から書き始めることができます。

With Worksheets(“Sheet1”)

End With

対象範囲をコピーして貼り付ける

最終行取得が取得できたら、対象範囲をコピーして貼り付けます。

対象範囲は、.Range(Cells(1, 1), Cells(lastrow, 2))です。結果的にA1からB列の最終行までになります。

これをCopyメソッドでコピーしています。

.Range(Cells(1, 1), Cells(lastrow, 2)).Copy

そして、PasteSpecialメソッドを使用してC1セルを示すCells(1, 3)への貼り付けています。

Paste:=xlPasteValuesは、値貼り付けであることを意味しています。書式は不要なので、値のみを貼り付けています。

.Cells(1, 3).PasteSpecial Paste:=xlPasteValues

解説は以上ですので、もう一度全体コードを示します。

Sub 対象領域をコピーして貼り付ける()
    Dim lastrow As Integer
        With Worksheets("Sheet1")
         lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
         .Range(Cells(1, 1), Cells(lastrow, 2)).Copy
         .Cells(1, 3).PasteSpecial Paste:=xlPasteValues
        End With
    Application.CutCopyMode = False
End Sub

まとめ

今回は、「対象範囲をコピーして貼り付ける」VBAコードについて、解説しました。

対象範囲をコピーして貼り付ける操作は、Excelを使用していると頻繁に出てくる操作かと思います。これを自動化できると、効率も上がりますね。

最後までお読みいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました