Excel VBA | Cellsプロパティ

VBA
スポンサーリンク

ここでは Cells プロパティでセルを指定する方法 を、プログラミング初心者向けに「超やさしく」「例題たくさん」で解説します。


Cells プロパティとは?

Excel のセルを「行番号 × 列番号」で指定できる道具(プロパティ)です。

  • Cells(1, 1) → A1
  • Cells(3, 2) → B3
  • Cells(5, 4) → D5

Excel の「行と列」は 数字で指定できるので、プログラムで自動処理するときにとても便利!


なぜ Cells を使うの?

Range("A1") でもセルを指定できますが…

Range の弱点

  • 「文字列」で書く必要がある
    Range("A" & i) のように文字を組み立てる必要がある
  • ループで扱うとコードが読みにくい

Cells の強み

  • 行・列が「数字」だけなので、ループと相性がいい
  • 書き方がシンプルで短い

基本の使い方(超シンプル版)

例1:C2(2行3列)に値を入れる

Sub Sample1()
    Cells(2, 3).Value = "こんにちは"
End Sub
VB

👆これは

  • 2行目
  • 3列目(C列)
    に「こんにちは」を入れるだけのマクロです。

例2:変数を使って動くセルを操作する

Excel のセルを「1行ずつ」「値を入れながら」下に進む、というよくある処理ができます。

Sub Sample2()
    Dim i As Long

    For i = 1 To 5
        Cells(i, 1).Value = "行番号:" & i
    Next i
End Sub
VB

実行すると…

A列
行番号:1
行番号:2
行番号:3
行番号:4
行番号:5

こんなふうに A列に順番に書き込まれます


例3:2次元的に行×列を自動処理する

Cells の本領発揮です!
行も列も変えながら処理できます。

<例> 3行×3列に「行,列」という文字を入れてみる

Sub Sample3()
    Dim r As Long, c As Long

    For r = 1 To 3
        For c = 1 To 3
            Cells(r, c).Value = r & "," & c
        Next c
    Next r
End Sub
VB

結果(Excel 上)

ABC
1,11,21,3
2,12,22,3
3,13,23,3

こういう「マス目処理」がとても簡単にできます。


例4:Range と組み合わせて複数セルをまとめて扱う

Cells は

  • 行番号・列番号で「1つのセル」を示す

Range(“A1:C3”) のように「範囲」を指定する場合は、Cells を2つ組み合わせることもできます。

例4:1行1列〜3行3列の範囲を取得

Dim rg As Range
Set rg = Range(Cells(1, 1), Cells(3, 3))
rg.Interior.Color = vbYellow
VB

結果

A1〜C3 が黄色で塗りつぶされます。

動的に範囲を変えたいときに便利!
(Range(“A1:C3”) だと文字列操作が必要になるので面倒)


例5:最終行まで自動で値を入れる(実務で超よく使う)

これが Cells の“実務的な使い方”です。

Sub Sample5()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' A列の最終行

    Dim i As Long
    For i = 2 To lastRow
        Cells(i, 2).Value = "OK"  ' B列に書き込み
    Next i
End Sub
VB

何をしているの?

  1. A列の一番下から上に向かって最終データを探す = 最終行
  2. 2行目〜最終行までループ
  3. B列に「OK」と書き込む

データ処理でめちゃくちゃ使われるパターンです。


Cells を使うと何ができる?

やりたいことCells が得意?
A1 のように固定セルを指定△(Range のほうが楽)
行番号が変わる処理
列番号が変わる処理
ループでたくさん処理する
文字列連結が必要な Range の代わり
動的な範囲取得(Range + Cells)

まとめ(初心者向けにざっくり)

  • Cells は 数字でセルを指定する道具
  • Cells(行, 列)
  • ループ処理と相性バツグン
  • プログラミング的には Range より扱いやすい
  • 実務では「最終行・最終列を探す」「動的範囲を作る」でほぼ必須

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました