- 「Range(“A1”)は見たことあるけど、Cellsってどう使うの?」
- 「ループで行を動的に指定したいけど方法がわからない」
- 「RangeとCells、どう使い分ければいいの?」
実は、Cells
を使いこなせれば行・列を柔軟に指定できるようになり、ループ処理の幅も一気に広がります!
この記事では、基本構文から実践的な活用法、Range
との違いまで、初心者でもすぐに使える形で解説します!
VBAのCellsプロパティとは?行列指定でセルを操作できる仕組み
Cellsプロパティは、Excelのセルを行番号・列番号で指定できる構文です。
Rangeが「A1」などのアドレスでセルを指定するのに対し、Cellsは「何行目・何列目か」で動的に操作できます。
基本構文とシンプルな使用例
Sub SampleCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルに"Hello"と入力
ws.Cells(1, 1).Value = "Hello"
End Sub
このコードでは、1行1列目(=A1セル)に”Hello”を入力しています。
行・列を数字で指定することで、変数を使ったセルの自動化が可能になります。
ループ処理との相性抜群!Cellsで行を動的に操作
Cellsの強みは、ループ処理での柔軟性の高さ。たとえば、A列に1〜10までの数値を入力するような処理は、RangeよりCellsが断然使いやすいです。
ForループとCellsで自動入力する例
Sub LoopWithCells()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Value = i * 10 ' A列に10の倍数を入力
Next i
End Sub
このように、行番号を変数で動かせるのがCellsの魅力。
大量のデータ処理や、条件分岐付きの行操作にも柔軟に対応できます。
条件によるセル操作:Cellsで書式を変更してみよう
Cellsを使えば、特定条件を満たすセルだけを強調表示することも簡単にできます。以下は、売上が一定値を超えた行の背景を変更する例です。
値に応じてセルの背景を塗り分ける
Sub HighlightHighValues()
Dim i As Long
For i = 2 To 20 ' 2行目以降のE列を対象
If Cells(i, 5).Value > 100000 Then
Cells(i, 5).Interior.Color = RGB(255, 230, 230)
End If
Next i
End Sub
このように、データをチェックして視覚的に伝えたい時の処理にもCellsは大活躍します。
Rangeとの違いと使い分けのコツ
Rangeは「アドレスで指定」、Cellsは「行列番号で指定」。どちらもセルを操作しますが、使いどころは異なります。
使い分け早見ポイント
用途 | 推奨プロパティ |
---|---|
A1やB2など明確なセル | Range |
行や列を動的に指定したい | Cells |
行×列で範囲指定 | Range(Cells(), Cells()) |
RangeとCellsを組み合わせた例
Sub DynamicRangeWithCells()
Dim startRow As Long: startRow = 2
Dim endRow As Long: endRow = 10
' A2:A10 に「OK」と入力
Range(Cells(startRow, 1), Cells(endRow, 1)).Value = "OK"
End Sub
このように、Cellsで開始・終了セルを指定し、Rangeでその範囲を一括操作することで、柔軟かつ効率的に範囲処理が可能になります。
まとめ:Cellsを使いこなせば、VBA操作の自由度が一気に上がる!
Cellsプロパティは、VBAの繰り返し処理・条件付き処理に欠かせない超便利なツールです。Rangeと違って行列指定ができるので、データ量が変動するシーンや動的な処理ではとても重宝します。
今回のまとめ
- ✅ 固定のセルはRange、動的セルはCells!
- ✅ ループ処理ではCellsがベスト!
- ✅ RangeとCellsの併用でさらに効率UP!
「なんとなくRangeばかり使ってた…」という人も、これを機にCellsを味方にしてみてください😊
コメント