この記事を読むのに必要な時間は約 6 分です。

 

エクセルVBAでセルの値を変える方法の1つに、Rangeプロパティを使う方法があります

 

どんなふうにソースコードを書けば良いのか、ネットで調べればたくさん出てきます。

 

でも、時には自力で解決したいと思うかもしれません。
マクロの記録で操作内容を保存すれば、ある程度分かります。

 

今回はマクロの記録を使いつつ、セルのコピペや値の変更などの簡単な操作について紹介します。

マクロの記録の場合、コピペはRangeプロパティ

セルを指定するには、RangeとCellsの2つがあります。

 

マクロの記録で使われるのはRangeだけ。

 

下図のセルをコピペして、記録されたRangeプロパティを確認してみます。

VBA入門_Range_セルの値を操作

1つのセルから1つのセルへ貼り付け

マクロの記録を実行した状態で、C3セルをコピーして、C4セルに貼り付けます。

VBA入門_Range_セルの値を操作

 

下図のようなソースコードが記録されました。

VBA入門_Range_セルの値を操作

 

テキストではこんな感じ。

Range(“C3”)のように、Range()のカッコの中にセルの位置をダブルクォーテーション「””」で囲んで書けば、セルを指定できることが分かります。

 

他に分かるのは、

  • .Select :選択
  • .Copy:コピー
  • .Paste:貼り付け

など。

1つのセルから、複数のセルへ貼り付け

次は、C4セルをコピーして、C5からC12セルまで範囲選択した状態で貼り付けます。

VBA入門_Range_セルの値を操作

 

先ほどと似たようなソースコードが記録されました。

VBA入門_Range_セルの値を操作

先ほどと違うのは、
Range(“C5:C12”) という書き方です。

 

開始と終了のセルをコロン「:」でつないで「C5:C12」のように書くことで、範囲を表現できるわけです。

 

.Copyや.Pasteをしなくても、セルの値を変更できる

実は、記録された.Copyや.Select、.Pasteなどの処理は省略出来ちゃいます!

 

値を入れるには、「=」を使って、他のセルの値を入れたり1を足してみたり、文字列として直接入れることも可能。

 

「=」の左側が格納先、右側が入る値になっています。

VBA入門_Range_セルの値を操作

.ValueはRangeプロパティが持つプロパティの1つです。

 

他にも罫線や書式などいろんなプロパティがありますが、省略した場合はデフォルトのプロパティとして設定されている.Valueが適用されます。

 

なので、こんな書き方
Range(“C6”) = “2018/11/3”
でも値を入れられますが、省略しているんだと覚えておいてくださいね。

 

では実行してみたいと思います。

VBA入門_Range_セルの値を操作

 

.Copyや.Pasteなどを使っていないのに、セルの値を変更できました。

VBA入門_Range_セルの値を操作

 

.Copyや.Pasteが便利な時は?

わざわざ書かなくてもセルの値を操作できるなら、いらない気がしますよね。

 

便利に使えるのがどんな時なのかは、実際に何が貼り付けられているのかを知れば分かるかもしれません。

 

コピペされているのはRangeプロパティです。
つまり、罫線やフォントサイズ、セルの背景色など、コピーしたセルのRangeプロパティが持っているプロパティをまとめて反映できるんです。

 

値以外にセルが持っている情報も貼り付け先に入れたいなら、便利に使えるのではないでしょうか。

まとめ:Rangeを使ってセルの値を操作する方法

Rangeプロパティでどうやってセルの値を操作するのか、理解する助けになりましたでしょうか。

 

とりあえずマクロの記録で記録された内容と、もっとシンプルな書き方を紹介しました。
値として貼り付けたり、直接入力した操作を記録すれば、他のプロパティで記録されたかもしれません。

 

マクロの記録だけでは分からない場合もあるので、Webサイトでも合わせて確認すれば理解が深まると思います。

 

最後までお読みいただき、ありがとうございました。