ExcelVBA入門第4回 RangeとCells

ExcelVBA入門第4回 RangeとCells

Excelを扱う上で非常に重要なのがセルの指定ですが、今までの記事では「Range」という記述を紹介してきました。でも、「Cells」とも書けるんです。どちらも最終的には同じ意味のことができますが、今回はその扱いの違いについて書いてみます。


セルの「値」を表す「.value」は省略されている

Range と Cells の違いに入る前に、注意しておきたいことがあります。ここまでは「セルに値を入れる」のに

Range("A1") = 1

という書き方をしていました。実はこのRange("A1")の後には.Valueという記述が省略されています。この部分を「プロパティ(属性)」と呼び、

  • Range(“A1”).Value → セルの値
  • Range(“A1”).Font → セルのフォント
  • Range(“A1”).Formula → セルの数式

このようにたくさんあるのですが、「省略された場合は.Valueとする」という決まりがあるのです。今回は、「値」であることを明確にするために、.Valueの記述も省略せずに書いてみましょう。

RangeとCellsの書き方の違い

120129-1

指定するセルは同じになりますが、Rangeは文字列Cellsは数値で表します。普通にExcelで使ってきた“A1”などの表記はRangeのほうです。こちらは理解し易いですよね。Cellsは、アルファベットを数値に置き換えて、更にを入れ替えた表記になります。

列はExcelで言う、上部に横に並ぶアルファベットの方で、行は左部に縦に並ぶ数値のほうです。Rangeは列が先、Cellsは行が先に来ます。ちょっとややこしいですが、大事なところなのできちんと覚えておきましょう。

Range と Cells どう使い分けるの?

120129-2

上の図の通り、Cellsを使うとプログラムの自由度がぐんと広がります。毎回同じセルに上書きするような内容ならRangeで構わないですが、履歴を残したいような場合は、プログラムを動かすたびに1行(または1列)ずらしながら書き込んでいきたいですよね。そういったことにCellsは最適です。

Range("A1").Value = 1
Range("A2").Value = 1
Range("A3").Value = 1
Range("A4").Value = 1
Range("A5").Value = 1

例えば、A1~A5セルまで1を入れる、という処理をRangeで書くとこのようになりますが、

For i = 1 To 5 'iを1から5まで繰り返す
  Cells(i, 1).Value = 1 'A□セルへ□を入れる←都度変わる
Next i '+1してForへ戻る

Cellsだと変数が使えるので、繰り返し処理を使ってこのように書けるのです。

繰り返し処理についてはこちらで説明しています。

アルファベットって数値でいくつ?

A, B, Cくらいなら分かりますが、後半になってきたらもうわかりませんよね。そんなときはExcelの表示を変えることができます。

120129-3

[ツール]→[オプション]の[全般]タブを開き、[R1C1参照形式を使用する]にチェックを入れます。

Excel2007以降は、[ファイル]→[オプション]→[数式]→[数式の処理]のところにあります!
120129-4

するとご覧の通り!アルファベットが数値になりますので、これを見ながらプログラムを組めば簡単です!ただ、このままにしておくとなんだか気持ち悪い感じを受ける人もいらっしゃいますので、先ほどと同じ所のチェックを外せば元通りアルファベットに戻りますので、必要な場合は戻しておいてください。

追記:A1/R1C1形式の簡単な切り替え

頻繁に切り替えるのが面倒だなってときにはこんな方法もあります。

公開日:2012/01/29
更新日:2013/12/20

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。