セル・行・列の扱い

セルの位置を指定するプロパティ Range と Cells

Excel はセルにいろいろなデータを書き込みます。

しかしExcelには 行数が1,048,576 、列数が16,384 ありますので、セルの数は両者を掛け合わせた数ということになりますので膨大な数のセルが存在することになります。

よって

「どのセルにデータがあるのか」
「この表はどこのセルにあるのか」

といった、セルの位置や範囲を具体的に示すことが非常に重要になります。

セル位置を表すプロパティは2通りあります。

RangeCells

それぞれについて説明します。

両方とも大切なプロパティです。
VBAでマクロを作るにはこの両者の扱いに慣れておく必要があります。

Range プロパティ

Range は、「単一のセル」および「複数のセル範囲」を指定したり参照するのに使います。

参照するセルを指定するときはセルをダブルクォーテーション「”」で囲む必要があります。

Range(”列・行”) の並びになります。
 
 
使用例

Sub セル指定1()
 Range(“A1″).Value=”日本” ‘①
 Range(“D1”).Value=123 ‘②
 Range(“A3:D3”).Interior.ColorIndex=5 ‘③
 Range(“A4″,”D4”).Interior.ColorIndex=6 ‘④
 Range(“A5,C5,E5”).Interior.ColorIndex=7 ‘⑤
 Range(“B6:C6,E6:G6”).Interior.ColorIndex=8 ‘⑥
 Range(“B8:D10”).Interior.ColorIndex=9 ‘⑦
End Sub

① A1セルに 日本 という文字を入れる
② D1セルに 123 という数字を入れる
③ A3 から D3 の連続セルを青にする
④ A4 から D4 の連続セルを黄にする(③と書き方は違っても結果は同じ)
⑤ 離れた単一セルをピンクにする
⑥ 離れた連続セルをライトブルーにする
⑦ 列行連続のセル(表)を茶にする

このように Range は単一セルも連続セルも指定・参照することができます。

Cells プロパティ

Cells プロパティは Range プロパティと同じようにセルを指定・参照することができます。

しかし Range プロパティと異なり、単一セルの指定・参照のみで、連続セルの指定・参照はできません。

しかし、VBAでマクロを作る際は、Rnage ではできない Cells ならではの使い方があります。

Cells(行・列)の並びになります。
※Range の並びと逆になることに注意

行位置は数字、列位置は数字もしくはアルファベットで表します。
※アルファベットの場合はダブルクォーテーション「”」で囲む必要があります。

列位置の A・B・C・D・E・・・の並びに対し、数字にする場合はそれぞれ 1・2・3・4・5・・・となります。

【列を数字で表示するには】
[ファイル] をクリックして [オプション] をクリック。
[数式] をクリック。
数式の処理にある [R1C1 参照形式を使用する] をチェックして [OK] をクリック。
これで列が数字で表示されます。
但し、Excelのバージョンによっては異なる場合があります。

 VBA でコードを書く場合、Range と Cells は混在して使っても問題ありません。
ですから Cells を使うからと言って、上記「メモ」のように必ずしも列を数字に変える必要はありません。

 
 
使用例

Sub セル指定2()
 Dim I As Integer
 Cells(1, 1).Interior.ColorIndex = 5 ‘①
 Cells(1,”D”).Interior.ColorIndex = 7 ‘②

 For I = 3 To 7   ‘③
  Cells(I, 3) = I – 2
  Cells(I, 3).Interior.ColorIndex = 6
 Next I
 
 For I = 1 To 6   ‘④
  Cells(9, I) = I * 100
  Cells(9, I).Font.ColorIndex = 5
 Next I
End Sub

① Cells(1,1)/Range(“A1″) のセルを青にする
② Cells (1,”D”) / Range(“D1”) のセルをピンクにする
  *この方法はあまり使いません。やはり Cells(1,4)が主
③ C列の3行目から7行目まで1~5の数字を入れ、黄にする
④ 9行目のA~F列に100~600の数字を入れ、文字色を青にする

Cells プロパティは列・行ともに数字が使えるので、VBAで使用する際は「変数」に置き換えられる利点があります。

上記の例でのように For ~ Next 文が使えます。
実際に使ってみるとその便利さが実感できるはずです。

ですからこの Cells の扱いにも慣れるようにしてください。

Cellsを使って範囲を指定する方法には
例:Range(“B3:D9”)
Range(Cells(3,2),Cells(9,4))
と書くことができます。
この方法では変数が使えますので、これもマスターするよにしてください。

RangeとCellsのまとめ

Range
 単一セルでも複数セル(セル範囲)でも使える
 列・行の順で表記 – 例:A(列)3(行)
 変数は使わない(使えないわけではない)
Cells
 単一セルのみで複数セル(セル範囲)の指定はできない
 行・列の順で表記 – 例:A3 は Cells(3,1)
 変数が使える

セル範囲を表す場合は Range を使いますが、それ以外は Cells を使うということを基本にやるようにしてください。