この記事を読むのに必要な時間は約 6 分です。
エクセルVBAでセルの値を変える方法の1つに、Rangeプロパティを使う方法があります
どんなふうにソースコードを書けば良いのか、ネットで調べればたくさん出てきます。
でも、時には自力で解決したいと思うかもしれません。
マクロの記録で操作内容を保存すれば、ある程度分かります。
今回はマクロの記録を使いつつ、セルのコピペや値の変更などの簡単な操作について紹介します。
目次(リンク)
マクロの記録の場合、コピペはRangeプロパティ
セルを指定するには、RangeとCellsの2つがあります。
マクロの記録で使われるのはRangeだけ。
下図のセルをコピペして、記録されたRangeプロパティを確認してみます。
1つのセルから1つのセルへ貼り付け
マクロの記録を実行した状態で、C3セルをコピーして、C4セルに貼り付けます。
下図のようなソースコードが記録されました。
テキストではこんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Macro1() ' ' Macro1 Macro ' ' Range("C3").Select Selection.Copy Range("C4").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub |
Range(“C3”)のように、Range()のカッコの中にセルの位置をダブルクォーテーション「””」で囲んで書けば、セルを指定できることが分かります。
他に分かるのは、
- .Select :選択
- .Copy:コピー
- .Paste:貼り付け
など。
1つのセルから、複数のセルへ貼り付け
次は、C4セルをコピーして、C5からC12セルまで範囲選択した状態で貼り付けます。
先ほどと似たようなソースコードが記録されました。
先ほどと違うのは、
Range(“C5:C12”) という書き方です。
1 2 3 4 5 6 7 8 9 10 11 |
Sub Macro2() ' ' Macro2 Macro ' ' Range("C4").Select Selection.Copy Range("C5:C12").Select ActiveSheet.Paste End Sub |
開始と終了のセルをコロン「:」でつないで「C5:C12」のように書くことで、範囲を表現できるわけです。
.Copyや.Pasteをしなくても、セルの値を変更できる
実は、記録された.Copyや.Select、.Pasteなどの処理は省略出来ちゃいます!
値を入れるには、「=」を使って、他のセルの値を入れたり1を足してみたり、文字列として直接入れることも可能。
「=」の左側が格納先、右側が入る値になっています。
.ValueはRangeプロパティが持つプロパティの1つです。
他にも罫線や書式などいろんなプロパティがありますが、省略した場合はデフォルトのプロパティとして設定されている.Valueが適用されます。
なので、こんな書き方
Range(“C6”) = “2018/11/3”
でも値を入れられますが、省略しているんだと覚えておいてくださいね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Public Sub copyRangeValue() 'コピペしなくても値を入れられる Range("C4").Value = Range("C3").Value '+1した値を入れてみる Range("C5").Value = Range("C3").Value + 1 '直接値を入れてみる Range("C6").Value = "2018/11/3" '空欄を入れてみる Range("C7").Value = "" '空欄のセルを貼り付け Range("C8:C12").Value = Range("C7").Value End Sub |
では実行してみたいと思います。
.Copyや.Pasteなどを使っていないのに、セルの値を変更できました。
.Copyや.Pasteが便利な時は?
わざわざ書かなくてもセルの値を操作できるなら、いらない気がしますよね。
便利に使えるのがどんな時なのかは、実際に何が貼り付けられているのかを知れば分かるかもしれません。
コピペされているのはRangeプロパティです。
つまり、罫線やフォントサイズ、セルの背景色など、コピーしたセルのRangeプロパティが持っているプロパティをまとめて反映できるんです。
値以外にセルが持っている情報も貼り付け先に入れたいなら、便利に使えるのではないでしょうか。
まとめ:Rangeを使ってセルの値を操作する方法
Rangeプロパティでどうやってセルの値を操作するのか、理解する助けになりましたでしょうか。
とりあえずマクロの記録で記録された内容と、もっとシンプルな書き方を紹介しました。
値として貼り付けたり、直接入力した操作を記録すれば、他のプロパティで記録されたかもしれません。
マクロの記録だけでは分からない場合もあるので、Webサイトでも合わせて確認すれば理解が深まると思います。
最後までお読みいただき、ありがとうございました。