第56回.Rangeオブジェクト(RangeとCells)
エクセルの根幹はセルです、セルはRangeオブジェクトになります、
このRangeオブジェクトの理解なくしてマクロVBAは理解できません。
マクロVBAで自在にセルを扱う為には、このRangeオブジェクトをしっかりと理解する必要があります。
Range、Cells、Rows、Columns・・・
どれも単一または複数セル表すRangeオブジェクトになります。
目次
Rangeオブジェクトを参照するためのプロパティ
言い方を変えれば、
Rangeオブジェクトを返すプロパティを経由してRangeオブジェクトを参照するという事です。
下表は、Rangeオブジェクトを参照するためのプロパティです。
| オブジェクト | プロパティ | 説明 |
| Worksheet | Range | セルまたはセル範囲を表す |
| Cells | セルを表す | |
| Rows | 行を表す | |
| Columns | 列を表す | |
| Range | Range | セルまたはセル範囲を表す |
| Cells | セルを表す | |
| Rows | 行を表す | |
| Columns | 列を表す | |
| EntireRow | セル範囲を含む 1 行または複数の行全体 | |
| EntireColumn | セル範囲を含む 1 列または複数の列全体 | |
| Offset | オフセットの範囲 | |
| Resize | サイズを変更 | |
| End | 領域の終端のセル。Ctrl+方向キーに相当 | |
| SpecialCells | 指定された条件を満たしているすべてのセル | |
| MergeArea | 結合セル範囲を表す | |
| Next | 次のセルを表す |
Rangeオブジェクトに、Rangeプロパティがあるあたりが、
少し理解しづらいかもしれません。
まずは、上表の太字が使えるようになること目指してください。
Rangeオブジェクトを返すRangeプロパティ
これは、WorksheetのRangeプロパティであり、このRangeプロパティを通して、Rangeオブジェクトを参照しています。
Rangeプロパティを介してRangeオブジェクトを参照しているのだと、まずはそのままに理解してください。
詳しくは、RangeとCellsの深遠
また、Offset、Resize等、まだ説明していないプロパティについては、このマクロVBA入門シリーズで今後少しづつ説明していきます。
Rangeオブジェクトのデータ型
つまり、
Dim MyRange As Range
Set MyRange = Worksheets(1).Range("B2:D10")
MyRange.Value =
"文字列"
これは、
Worksheets(1).Range("B2:D10").Value = "文字列"
これと同じことになります。
全てのセルを表すCells
シートの全セル
WorksheetオブジェクトのCellsは、シートの全セルを参照することになります。
複数セルを含むRangeオブジェクトの全セル
Rangeオブジェクトの使用例
Dim MyRange As Range
Set MyRange = Worksheets(1).Range("B2:D10")
MyRange.Cells(3, 2) = "C4セル"
これは、C4セルに文字が入ることになります。
RangeオブジェクトであるMyRangeの先頭セルはB2セルです。
Cells(...)は、Rangeオブジェクト内の行列の位置を引数に指定します。
MyRange.Cells(3, 2) はB2セルから3行目の2列目
つまりB2セルの2つ下1つ右のC4セルになります。

RangeオブジェクトのCells(...)とItem(...)
当面はtemプロパティというものがあるという事だけ知っていれば十分です。
これは、
MyRange.Item(3, 2)
このようにItemプロパティを使っても同じ指定になります。
さらに、
MyRange.Item(8)
このようにItemに引数を1つだけ指定する書き方もあります。

2つ指定した場合は行列の指定。
1つだけ指定した場合はセルの順番(列→行)の位置のセルになります。
(上記の(8)は、3列が2行で6、次の2番目のセルなので、6+2=8番目のセル)
RangeとCellsの使い分け方
複数セル範囲と名前定義の場合はRangeを使う、それ以外はCellsを使う。
これが基本になります。
変数を使う時はCells、Rows、Columnsを使用すると言う事です。
これについては第11回.RangeとCellsの使い方こちらで解説しています。
VBEの自動メンバ表示(インテリセンス)
この自動メンバ表示の事をインテリセンスと呼びます。
range("A1").
と、「.」を打った時点で、メンバが自動表示されます。

Cells(1, 1)
これでは表示されません。

cells.
このように、引数の()を省略するか、
cells().
と、引数を空っぽにするとメンバが自動表示されるようになります。

なぜこのような挙動の違いがあるかを気にする方がたまいますが、
そのようなことを気にするより、まずはしっかり使えるようになることを優先してください。
Cellsだけで引数を指定しない時と、引数を指定した時では、
参照しているプロパティが別物になります。
引数を指定する単一セルを参照するプロパティは、戻り値がVariantになります。
RowsとColumns
Columnsで取得されるRangeオブジェクトは列の集まりになります。
これらは、単一セルの集まりではなく、行全体や列全体の集まりになります。


Rows(n) → Rows.Item(n)
Columns(n) → Columns.Item(n)
Rangeオブジェクトのプロパティとメソッド
先の表では、Rangeオブジェクトを返すプロパティのみ記載したわけですが、
全プロパティとメソッドについては、以下を参照して下さい。
一度くらいは、どんなプロパティがあるかだけでも、ざっと目を通しておくと良いでしょう。
最低限必要なプロパティ・メソッドは、このマクロVBA入門で一度は説明します。
Rangeオブジェクトは難しい
RangeとCellsの関連記事
同じテーマ「マクロVBA入門」の記事
第53回.Workbookオブジェクト
第54回.Windowsオブジェクト
第55回.Worksheetオブジェクト
第56回.Rangeオブジェクト(RangeとCells)
第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
第58回.コレクションとは(Collection)
第59回.コレクション処理(For Each)
第60回.エラー処理(On Error)
第61回.「On Error GoTo」と「Exit Sub」
第62回.「On Error Resume Next」とErrオブジェクト
第63回.ブックを開く(Open,Add)
新着記事NEW ・・・新着記事一覧を見る
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
