【VBA入門】Cellsの使い方完全ガイド|Rangeとの違いや変数での指定方法

会社員やフリーランス、学生など、立場を問わずExcelの業務効率化は非常に重要なテーマです。

その中心となるVBAを使いこなすために、必ず理解しておかなければならないのがCells(セルズ)の操作です。

本記事では、CellsとRangeの違いや具体的な使い分け、Offsetプロパティの活用方法について詳しく解説します。

変数を使ったセルの指定方法も紹介しますので、マクロの基礎を固めたい方はぜひ参考にしてください。

Cellsとは?

VBAにおけるCellsとは、エクセルシート上の特定のマス目を指定するためのプロパティです。

例えば「特定の条件を満たすセルを自動で色付けする」といった指示を実装する際に、Cellsは欠かせない存在となります。

Cellsの最大の特徴は、行と列を数値で指定できる点にあり、繰り返し処理(ループ)と非常に相性が良いことです。

Rangeとの違い

Cellsと同じくセルを操作する命令にRange(レンジ)がありますが、これらには明確な役割の違いがあります。

Cellsは主に単一のセルを数値で指定するのに向いており、一方でRangeは「A1:C5」のように範囲を選択する際に力を発揮します。

どちらも単一セルの指定は可能ですが、プログラムの可読性や目的に応じて使い分けるのが一般的です。

CellsとRangeの基本

Cellsは行と列を数値で指定する単一セル向けのプロパティです。

Rangeは「A1」形式で指定し、複数のセル範囲を扱うのに適しています。

どちらもVBAで最も頻繁に使用される重要な概念です。

CellsとRangeの使い分け

実務においては、状況に合わせてCellsとRangeを賢く使い分ける必要があります。

Cellsの基本構文は「Cells(行番号, 列番号)」であり、例えばCells(2, 5)は2行目のE列を指します。

Cellsでの単一セル選択

Sub CellsSelect()
    Cells(2, 5).Select
End Sub

また、Cells.Selectと記述すれば、シート全体のセルを瞬時に指定することも可能です。

対してRangeは、直感的な範囲指定を行う場合に非常に便利です。

Rangeでの範囲選択

Sub RangeSelect()
    Range(“A2:C4”).Select
End Sub

このように、固定された範囲を操作する場合はRange、動的にセルを変えたい場合はCellsを使うのが定石です。

Cellsプロパティについて

Cellsプロパティの本質は、行と列の両方を数字のみで指定できるという点にあります。

Rangeプロパティが「A1」のようにアルファベットを必要とするのに対し、Cellsは「2, 2」のように記述します。

これにより、列が「Z」を超えて「AA」や「AB」になっても、単純な数値計算でセルを特定できるメリットがあります。

Offsetプロパティとは

Cellsと組み合わせてよく使われるのが、指定したセルから相対的な位置を取得するOffsetプロパティです。

基準となるセルから「1行下、2列右」といった移動後の範囲を選択する際に使用されます。

Offsetの記述例

Range(“A1”).Offset(1, 2).Select

Cellsの基本的な使い方

ここからは、実務で役立つCellsの具体的な操作方法をステップごとに見ていきましょう。

Selectで特定のセルを指定

Selectメソッドは、特定のセルをアクティブな状態にするための基本命令です。

類似の命令にActivateがありますが、Selectは新しい範囲を選択し直す際に使用されます。

複数のセルが選択されている状態で、その中の1つだけを操作したい場合に違いが現れます。

任意のセルの範囲を指定

Cellsを使えば、特定のセルが含まれる一連のデータ範囲をまとめて取得することも可能です。

CurrentRegionプロパティを組み合わせることで、空白行に囲まれたデータのかたまりを自動で判別できます。

これにより、データ量が変わる表であっても、常に最新の範囲を正確に操作できるようになります。

  • 特定の1マスをピンポイントで操作したいとき
  • データのかたまりを自動的に判別して処理したいとき
  • 基準点から相対的な位置にあるセルを扱いたいとき

Cellsの引数に変数を使って指定する方法

Cellsの真価を発揮させるには、引数に変数を使用するテクニックが欠かせません。

例えば、For文などのループ処理の中にCellsを組み込めば、大量のデータを自動で処理できます。

変数を使った繰り返し処理

Dim i As Integer
For i = 1 To 10
    Cells(i, 1).Value = i & “行目”
Next i

このように記述すれば、A1セルからA10セルまで順番に値を入力するといった作業が一瞬で完了します。

手作業では数時間かかる膨大な入力作業も、変数を活用したCellsならミスなく正確に実行可能です。

まとめ

本記事では、VBAにおいて重要なCellsとRangeの役割や使い分けについて詳しく解説しました。

Cellsは単一セルや繰り返し処理に適しており、Rangeは視覚的な範囲指定に強いという特徴があります。

これらの違いを正しく理解し、用途に合わせて選択することがVBA上達の最短ルートです。

実際にエクセルを開いてコードを書き、セルが自動で動く仕組みを体感してみてください。

正しい知識を身につけることで、日々のルーチンワークを飛躍的に効率化できるはずです。

よくある質問

Cells(1, 2)はどのセルを指しますか?

「1行目の2列目」を指すため、セルB1を選択したことになります。最初の数字が行、2番目の数字が列を表します。

CellsとRange、どちらを先に覚えるべきですか?

まずは「A1」形式で分かりやすいRangeから入り、繰り返し処理を学び始めるタイミングでCellsを習得するのがスムーズです。