コピーはマウス、キーボード操作でも日常的によく使用しますね。別シートにあるセルをコピーする場合のVBAでの記載方法の紹介です。
VBAで記載するとどのような記載をすればよいのか、見てみましょう!
- マウス、キーボード操作の動きをコード化
- Copyを使用する
- セルの値のみをコピー
やりたいこと
今回やりたいことは、Sheet1のB2~B5の範囲の値をSheet2のB2~B5にコピーする、です。。B3のセルは橙色の書式となっています。書式ごとコピーする方法①②とセルの値のみをコピーする方法③について紹介します。
コード記述例
①マウス、キーボード操作の動きをコード化
まずは、マウス、キーボード操作の手順をそのままコード化してみます。
手作業でコピーする場合、以下のような操作になりますね。
- コピー範囲(Sheet1のB2~B5)を選択し、コピー
- コピー先であるSheet2を選択
- 張り付けたいセル(Sheet2のB2)を選択し、貼り付け
- Sheet1を選択し、初めの状態に戻る
それをそのままコード化してみると、以下のようなになります。やりたいことを実現するために5行のコードが必要となりました。確かに、これでも動きとしては問題ありませんが、なんだがやりたいことに対してコードが大げさすぎる印象があります。
もっと、シンプルにコードを記載する方法はないのでしょうか?
Worksheets(“Sheet1”).Range(“B2:B5”).Copy
Worksheets(“Sheet2”).Select
Worksheets(“Sheet2”).Range(“B2”).Select
ActiveSheet.Paste
Worksheets(“Sheet1”).Select
②Copyを使用する
Copyの機能を利用することで5行必要だったコードが1行で記載することが可能です。コード例は以下の通りです。
左側にコピー元、右側にコピー先を記載することで使用します。コピー元に「.Copy」を付けることで使用できます。
1行当たりのコードが長くなりすぎて見にくい場合は、コードを途中で分割して2行で記載することも可能です。2行にしたい場合は、スペースとアンダーバーを記載して、改行します。
あまり長すぎるコードは見にくくなるので途中で改行したほうがよいですが、1行がよいのか、2行のほうが見やすいのかこのあたりは好みになりますね。
Worksheets(“Sheet1”).Range(“B2:B5”).Copy _
worksheets(“Sheet2”).Range(“B2:B5”)
③セルの値のみをコピー
セルの値のみをコピーする方法について紹介します。マウス操作でする場合は、形式を選択して貼り付けですが、この機能をコードでそのまま記載するとかなり複雑になってしまいます。ここでは、簡単に値のみをコピーする方法を紹介します。
Worksheets(“Sheet2”).Range(“B2:B5”).Value _
= Worksheets(“Sheet1”).Range(“B2:B5”).Value
「Value」はセルの中の値という意味です。コードの意味は、Sheet1のB2~B5の範囲の値(Value)をSheet2の B2~B5の範囲の値(Value) に代入(=)するという意味になります。
これでも、セルの中の値をコピーすることが可能です。
まとめ
マウス、キーボード操作の動きをそのままコード化しても機能としては実現できますが、コードが長くなり見にくく(可読性)が悪くなってしまいます。コードはシンプルにわかりやすく書くのが良いですね。
それでは、また!