前回の復習と今回の目的
前回はあるシート(sheet)のセル(Cell)に値を代入する方法を学びました。今回は最終的には別シート(sheet)のセル(Cell)の値を転記させたいと思います。
まずセル(Cell)からセル(Cell)に転記
まずはセルからセルへの転記方法について説明します。
ただ、前回までの記述を考えると、代入する側、つまりイコール(=)の右側を変更することで可能であると推測がつかないでしょうか。
それで正解です。上記の赤枠の部分を別のセルを指定してあげればよいのです。
以下の状況でセル(Cell)の”D6″を”B3″に転記するプログラムを考えてみたいと思います。シート名は”Sheet1″です。
以下のプログラムになります。
Sub sample()
Worksheets(“Sheet1”).Range(“B3”).Value = _
Worksheets(“Sheet1”).Range(“D6”).Value
End Sub
どうだったでしょうか。想像通りだった方も多かったのではないでしょうか。もし、想像と違っても答えを見て意味が分かれば問題はありません。イコール(=)の右側に”Sheet1“の”D6“を指定しているのが分かります。
余談ですが、プログラムは一定のパターンを組み合わせて作る側面もあります(それだけではダメですが)。様々なプログラムを見て覚えることで「あの時、あんな感じで記述したな」と思い出せるようになればいいということです。
更に余談のような話ですが、このプログラムは「Worksheets(“Sheet1”)」を省略しても動きます。
つまり、以下のようになります。
Sub sample()
Range(“B3”).Value = Range(“D6”).Value
End Sub
楽ですね。これはこのプログラムをシート名”Sheet1″に記述しているので、特別に記述しなければ、自分のシート(今回はSheet1)に対する命令だなとプログラムが判断するからです。明示的に書いても問題はありません。
別シート(Sheet)からの転記へ
では、次に別シート(sheet)のセル(Cell)の値を転記してみましょう。ただ、前回同様、これまでの流れを考えると推測ができる方もいらっしゃるのではないでしょうか。
ここではシート名”Sheet1″のセル(Cell)”B4″に、シート名”Sheet2″のセル(Cell)”B2″の値を転記した時を考えてみてください。
以下のコードが答えです。
Sub sample()
Worksheets(“Sheet1”).Range(“B4”).Value = _
Worksheets(“Sheet2”).Range(“B2”).Value
End Sub
イコール(=)の右の部分を「Worksheets(“Sheet2“).Range(“B2“).Value」とすることで別シート(sheet)の指定もできるようになるわけです。すでにシート(sheet)からの指定方法を知っていたので、結果的に別シート(sheet)の指定方法もイメージしやすかったのではないでしょうか。
ファイル保存の話
さて、これまでのVBAのプログラムの内容は数行のプログラムだったので実際に記述して試してみたら、特に保存をせずに終わっても、また書けばよかった部分もありますが、実際は事務処理のたびにプログラムを書くわけではありません(当たり前です)。書いたプログラムを保存する必要があるのですが、保存する際に一点注意することがあります。
それは、拡張子を「~.xlsx」から「~.xlsm」に変更して保存しなければいけないという事です。
もしかしたら、新規で作成されて、そのまま保存された方は無意識に”xlsm”で保存しているかもしれませんが、すでに”xlsx”で保存していたブック(Book)にプログラムを記述して保存しようとすると、何やらダイアログが表示されて気持ち悪い状況になっていたかもしれません。ダイアログが出たら「いいえ」を押して”xlsm”として保存しましょう。
この次は
セル(Cell)の転記から別シート(sheet)の転記までを進めましたが、記述内容に大きな変化がなかったので、意味は理解しやすかったのではないでしょか。
さて、この次に「転記シリーズ」を進めるとするならば、もうひとつ上のくくりである別ブック(Book)のシート(sheet)のセル(Cell)の値を転記するのはどうでしょうか。
GUIを使ったマウスなどの処理としては以下のようなイメージになります。コピー先のシート(sheet)は開いている状態からの手順です。
- コピー元のブックを開く
- コピー元ののシートを選ぶ
- コピー元のセルをコピーする
- コピー先のシートを選ぶ
- コピー先のセルを選ぶ
- 貼り付け処理をする
では早速、書いていきたいところですが、これから別ブック(Book)の内容を書いていると長くなるので次回にしましょう。お疲れさまでした。