Cells

Worksheet

1. はじめに

Excel VBAにおけるCellsは、ワークシート上のセルを参照するための非常に基本的で重要なオブジェクトです。
Cellsは「セル全体を表すコレクション」ではなく、セルを指定するためのプロパティとして機能します。

Cellsを使うと、行番号と列番号でセルを指定できるため、ループ処理や動的なセル操作に便利です。


2. Cellsとは何か?

  • Cellsは、Worksheetオブジェクトのプロパティであり、セルを指定するために用いられます。
  • Cells(row, column)の形式で指定し、特定のセルを参照できます。
  • rowcolumnは共に数値で指定し、行番号・列番号を表します(1始まり)。
  • Cellsは単一のセルを表すこともできますし、範囲を表すこともできます(複数セルを範囲として指定した場合)。

3. Cellsの使い方の基本

3-1. 単一セルの参照

Sub セル参照例()
' A1セルを指定(1行1列)
Cells(1, 1).Value = "こんにちは"

' B2セルを指定(2行2列)
Cells(2, 2).Value = 100
End Sub
  • Cells(1, 1)はセルA1、Cells(2, 2)はセルB2を指します。
  • 列番号は数字で表すため、列Aは1、Bは2、Cは3…となります。

3-2. 複数セルの範囲指定

Sub 範囲指定例()
' 1行1列から3行2列までの範囲(A1:B3)
Range(Cells(1, 1), Cells(3, 2)).Interior.Color = RGB(255, 255, 0)
End Sub
  • Rangeの引数にCellsを組み合わせて、動的な範囲指定ができます。
  • これはループや変数を使って範囲を変えるときに便利。

4. CellsとRangeの違い

  • Cellsは基本的に「1つのセルを指定するため」のプロパティだが、開始セルと終了セルを組み合わせて範囲を作ることができる。
  • Rangeはセルの範囲を表すオブジェクトで、文字列で範囲を指定できる(例:”A1:B3″)。
  • Cellsは行・列番号の動的指定に向き、Rangeは固定範囲の指定に向いていることが多い。

5. Cellsを使ったループ処理の例

Excel VBAでよく使われるパターンの一つは、Cellsを使ったループ処理です。

5-1. 1列目の1〜10行目に値を入力

Sub ループ処理例()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i * 10
Next i
End Sub
  • Cells(i, 1)で1列目のi行目を指定。
  • ループ変数iに応じてセルを動的に指定し、値を設定。

5-2. 複数行列の二重ループ

Sub 二重ループで値設定()
Dim r As Integer, c As Integer
For r = 1 To 5
For c = 1 To 3
Cells(r, c).Value = r * c
Next c
Next r
End Sub
  • 5行3列の範囲に掛け算の結果を入れる例。

6. Cellsを使った動的範囲の扱い

Cellsは動的にセル位置を決めたいときに特に重宝します。

6-1. 最終行を使った処理

Sub 最終行までループ()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

Dim i As Long
For i = 1 To lastRow
Cells(i, 1).Value = "データ" & i
Next i
End Sub
  • Cells(Rows.Count, 1)は最終行の1列目(例えば1048576行目)を指す。
  • .End(xlUp)でその列の最後のデータがあるセルを取得。
  • 最終行を変数にしてループ範囲を動的に設定。

7. Cellsの応用例

7-1. 列番号を変数で指定

Sub 列番号を変数で操作()
Dim colNum As Integer
colNum = 3 ' C列

Cells(1, colNum).Value = "ヘッダー"
End Sub
  • 列番号を変数に代入して柔軟にセル操作可能。

7-2. 列番号を列文字に変換せず使うメリット

  • 列番号は数字なので計算や加算が容易。
  • 文字列の列名を変換する必要がないためコードがシンプル。

8. 注意点とエラー回避

  • Cellsを使う場合は、どのWorksheetのセルかを明確に指定しないと、アクティブシートのセルを参照してしまうので注意。
Sub ワークシート指定()
Worksheets("Sheet1").Cells(1, 1).Value = "指定セル"
End Sub
  • 行番号・列番号は1以上の整数で指定し、0やマイナスはエラーになる。

9. Cellsを使った範囲の動的指定の応用

9-1. 範囲のサイズを変数で指定

Sub 動的範囲塗りつぶし()
Dim r As Long, c As Long
r = 10
c = 5

Range(Cells(1, 1), Cells(r, c)).Interior.Color = RGB(200, 200, 255)
End Sub
  • 行数や列数を変数にして処理範囲を動的に変えられる。

10. Cellsでのセル参照の省略形

  • ワークシート内でCellsを単独で使うと、暗黙的にActiveSheet.Cellsと同じ意味。
  • 複数シートを操作する際は明示的にWorksheetを指定するのがベター。

11. まとめ

項目内容
Cells行番号・列番号でセルを指定するためのプロパティ
形式Cells(row, column)で1始まりの数字で指定
単一セルの参照例:Cells(3, 2)はB3セル
複数セルの範囲指定例:Range(Cells(1,1), Cells(3,3))はA1:C3
ループとの親和性動的なセル操作やループ処理に適している
ワークシート指定Worksheets("Sheet1").Cells(1,1)で特定シートのセルを指定
注意点範囲外の行列指定はエラー、明示的なシート指定推奨
タイトルとURLをコピーしました