範囲指定した値をワークシート間で代入する
「範囲指定したセルの情報を別のワークシートに貼り付ける」という作業を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に貼り付けます。(実際は代入です)
作業後のセルです。綺麗に値が入りました。
ワークシートを指定したコーディングが出来ているのでどちらのワークシートがアクティブでも同じ結果が出力できますよ。
コードとワークシートの紹介は以上です。
説明が必要な方は以降の記事をご覧ください。
電子書籍はこちらです。
解説
ポイントは1つです。「ワークシート間の処理」という事です。今回はこれが全てです。
もう少し具体的に書くと3つに分けることができます。
- オブジェクト変数を定義
- オブジェクト変数にオブジェクトを疑似的に格納
- 代入時に変数を的確に選んで使用する
コーディング時に気を付けるポイントは「コピー元と貼り付け先が別の環境であることを意識する」ことです。
1_オブジェクト変数を定義
オブジェクト変数に関する説明はこちらの記事をご覧ください。
2_オブジェクト変数にオブジェクトを疑似的に格納
オブジェクト変数へのオブジェクトの格納はあくまで疑似的です。詳細はこちらの記事をご覧ください。
3_代入時に変数を的確に選んで使用する
オブジェクト変数rng1とrng2に値をセットする時にオブジェクト変数ws1とws2を使います。
これでどのワークシートのセルを扱うのかを明確に指示することができます。
- rng1 ・・・ Sheet1のセルG5からI7 を格納
- rng2 ・・・ Sheet2のセルB5からD7 を格納
これでワークシートとセルの関係は固定されたのであとはrng1とrng2の関係だけ追えば良いです。
rng2のValueプロパティにrng1のValueプロパティを代入してあげればOKです。
最後に文字位置を調整して作業終了となります。
まとめ
範囲指定した値をワークシート間で代入するという作業を解説しました。
今回はコピペに似ている代入という行為を見ていただきました。
代入の方が処理速度も速いしコードもシンプルになります。是非お試しください。
コピペについても記事を書いています。興味がある方はご覧ください。