Rangeオブジェクトを使って範囲指定した値をワークシート間で代入する|VBA

お知らせ記事には広告が含まれておりますがExcelのスキルUPに繋がる様コンテンツ自体は手を抜かずに作成しております

範囲指定した値をワークシート間で代入する

「範囲指定したセルの情報を別のワークシートに貼り付ける」という作業をVBAを使って表現してみます。

コピー&ペースト(コピペ)を連想してしまうのですがやることは「代入」です。

コード

コードはこちらです。

Sub ワークシート間で範囲指定したセルの値を代入()

Dim ws1 As Worksheet 'Worksheet型で変数を定義
Dim ws2 As Worksheet 'Worksheet型で変数を定義

Set ws1 = Sheet1 '変数にワークシートを格納
Set ws2 = Sheet2 '変数にワークシートを格納

Dim rng1 As Range 'Range型で変数を定義
Dim rng2 As Range 'Range型で変数を定義

Set rng1 = ws1.Range("G5:I7") '変数にセルの範囲を格納
Set rng2 = ws2.Range("B5:D7") '変数にセルの範囲を格納

With rng2 'オブジェクト変数rng2でWithステートメントを組む
    .Value = rng1.Value 'オブジェクト変数rng1の値を代入
    .HorizontalAlignment = xlCenter '文字位置(横)を中央に揃える
    .VerticalAlignment = xlCenter '文字位置(縦)を中央に揃える
End With

End Sub

半分は変数の定義とオブジェクトの格納です。

コードというコードは書いていません。非常に簡単です。

作業前/作業後

作業前のワークシート1です。コード内ではws1です。

変数rng1にはセルG5からI7を格納します。

作業前のワークシート2です。コード内ではws2です。変数rng2にはセルB5からD7を格納します。

最終的にはワークシート1のG5からI7の値をワークシート2のB5からD7に貼り付けます。(実際は代入です)

作業後のセルです。綺麗に値が入りました。

ワークシートを指定したコーディングが出来ているのでどちらのワークシートがアクティブでも同じ結果が出力できますよ。

コードとワークシートの紹介は以上です。

EnjoyExcel
EnjoyExcel

説明が必要な方は以降の記事をご覧ください。

電子書籍はこちらです。

解説

ポイントは1つです。「ワークシート間の処理」という事です。今回はこれが全てです。

もう少し具体的に書くと3つに分けることができます。

  1. オブジェクト変数を定義
  2. オブジェクト変数にオブジェクトを疑似的に格納
  3. 代入時に変数を的確に選んで使用する

コーディング時に気を付けるポイントは「コピー元と貼り付け先が別の環境であることを意識する」ことです。

1_オブジェクト変数を定義

オブジェクト変数に関する説明はこちらの記事をご覧ください。

2_オブジェクト変数にオブジェクトを疑似的に格納

オブジェクト変数へのオブジェクトの格納はあくまで疑似的です。詳細はこちらの記事をご覧ください。

3_代入時に変数を的確に選んで使用する

オブジェクト変数rng1とrng2に値をセットする時にオブジェクト変数ws1とws2を使います。

これでどのワークシートのセルを扱うのかを明確に指示することができます。

  • rng1 ・・・ Sheet1のセルG5からI7 を格納
  • rng2 ・・・ Sheet2のセルB5からD7 を格納

これでワークシートとセルの関係は固定されたのであとはrng1とrng2の関係だけ追えば良いです。

rng2のValueプロパティにrng1のValueプロパティを代入してあげればOKです。

最後に文字位置を調整して作業終了となります。

まとめ

範囲指定した値をワークシート間で代入するという作業を解説しました。

今回はコピペに似ている代入という行為を見ていただきました。

代入の方が処理速度も速いしコードもシンプルになります。是非お試しください。

コピペについても記事を書いています。興味がある方はご覧ください。

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