ここでは「Cell」と「Range」について説明します。
自動記録で、セルA5を選択すると
Range("A5").Select
← こうなります。
これはCellsプロパティーを使用して書くと
Cells(5,1).Selectとなります。
つまり、Cellsは(行番号,列番号)と書き換えることができます。
「せっかくわかりやすいRangeプロパティがあるのになぜCellsなんかあるの」と思う方いるかもしれないので
ここで、Cellsのメリットを説明します。 ⇒
行列が数字で指定できるため、変数を使った処理に対して非常に有利。
たとえば、行方向になにかを入力する処理は↓
Sub
Cellバージョン()
Dim i
For i = 1 To 100
'↑iの値を1ずつ増やして100までNextまでの中を繰り返す。
Cells(i, 1).Value = "犬" & i
'↑全部犬では面白くないので「i」の値も表示
'この「&」の使い方は要チェック
'↑i は1ずつ増えていくのでセルの行が下方向へ進む。
Next i
End Sub
Sub Rangeバージョン()
Dim i
For i = 1 To 100
'↑iの値を1ずつ増やして100までNextまでの中を繰り返す。
Range("A"
& i).Value = "犬" & i
'↑全部犬では面白くないので「i」の値も表示
'この「&」の使い方は要チェック
'↑i は1ずつ増えていくのでセルの行が下方向へ進む。
Next i
End Sub
|
行方向はどちらのバージョンでもできますが
列方向はどうでしょう?
Sub Cellバージョン()
Dim i
For i = 1 To 100
'↑i の値を1ずつ増やして100までNextまでの中を繰り返す。
Cells(1, i).Value = "犬" & i
'↑i は1ずつ増えていくのでセルの列が右方向へ進む。
Next i
End Sub
Sub Rangeバージョン()
For i% = 65 To 90
Range(Chr(i%) & 1).Value = "テスト"
Next i%
For j% = 65 To 73
For k% = 65 To 90
If j% = 73 And k% = 87 Then
Exit For
Else
Range(Chr(j%) & Chr(k%) & 1).Value = "テスト"
End If
Next k%
Next j%
End Sub
協力:ケインさん
|
Rangeプロパティーは、列の表記が「A,B,C,D・・・」なので
数字でのループ処理には適していません。
上記のように直接文字コードを指定してやる方法があるのですが
@処理が上記のようにややこしくなる。
A処理スピードも遅い。
以上の理由によりお勧めできません。
自動記録ではRangeで記録されてしまうので、Cellsに書き換えなくてはいけません。
ここで、Cellsの表記方法をすこし紹介しておきます。
Cells |
Range |
Cells(3,2).select |
Range("B3").Select |
Range(Cells(1,1),Cells(3,2)).Select |
Range("A1:B3").Select |
Cells.Select'←全部選択 |
Range("A1:IV65536").Select |
Cells(1).Select |
Range("A1").Select |
Cells(257).Select |
Range("B1").Select |
Cells(10,"D").Select'←ひねくれた例 |
Range("D10").Select |
最後に九九の一覧を例にとってに「For
Next 」の使い方を説明します。
Sub 九九の一覧表()
Dim i, p
For i = 1 To 10
'↑iの値を1ずつ増やして10までNextまでの中を繰り返す。
For p = 1 To 10
'↑pの値を1ずつ増やして10までNextまでの中を繰り返す。
Cells(i, p).Value = i * p
'↑行がi、列がpのセルに「i*p」の値を入れる。
Next p
Next i
End Sub |
これを実行すると一瞬で終わってしまってなにがなんだかわからないと思うので
ステップ実行でやってみましょう。
VBEのウィンドウを画面の半分くらいにして、シートが見えるようにします。
ツール-マクロでステップインを押します。
そうすると、九九の一覧表の部分で黄色くなってるはずです。
「F8」を押すと一行ずつ実行していきます。
その結果が、リアルタイムに、ワークシートに現れていきます。
ゆっくり実行していくと、なんとなくわかってくると思います。
「For Next 」は、連続処理の基本で、今後もしつこいくらいでてきますので
今回は、ステップ実行で感覚をつかむ程度で大丈夫です。
☆☆☆☆☆☆☆☆ まとめ
☆☆☆☆☆☆☆☆
1 セル操作には、Cells表記とRange表記がある。
2 Cells表記は、Range表記と、行列が逆になる。例:Range("C1")⇒Cells(1,3)
3 Cells.Selectはシートのセル全部を選択する。
4 ステップ実行は、F8で一行ずつ実行できる。 |
エクセルは、セルを選択・操作しないとなにもできません(少し語幣が・・)
という訳で次回はRangeおよびCellsの操作について説明します。
|