● 用語:~Excel2000~RangeプロパティでのRangeオブジェクトの取得と、Cellsプロパティでのそれとの違いについて
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。

※本記事は、僕自身が「ヘルプ」を読んで、そこに書いてあったことを自分なりにまとめなおして書いただけですので、間違いがあったらすみません。(でも、ここに書いてあることは、「For Each ~ Next 文」以外のことは全部、ヘルプに書いてあります。なのでぜひヘルプも読んでみてください。Web記事や市販書籍だけだと間違います。)

※参考図
以下の図も参考にしてみてください。
「正規ルート」と「ワープルート」の違いなどを良く見てみてください。

Rangeオブジェクトを取得するための「正規ルート」は、
「Application」のてっぺんから「Worksheet.Range プロパティ」を通過するルート、
「だけ」、その「1つのみ」、です。(・・・というイメージです。)
(ピンクの階段状の太い矢印のルート。)
「Worksheet.Range プロパティ」を通過した場合は、
「ワークシート上のテーブル機能などが否適用の・もっとも基本的なセル範囲」を
ゲットした、ということになります。(・・・というイメージです。)

それに対して、例えば、「Worksheet.Cells プロパティ」からのルートや、
「Worksheet.UsedRange プロパティ」や「Worksheet.Cells プロパティ」
「Application.Cells プロパティ」、
「Range.CurrentRegion プロパティ」、「Range.Cells プロパティ」、
「Window.Selection」「Application.Selection」等々からのルートは、
「ワープルート」になります。(・・・というイメージです。)
(オレンジの曲線の点線矢印のルート。)

「ワープルート」のプロパティを通るRagneオブジェクトの取得(ゲット)は、
「いちおう正規ルートを通ってRangeオブジェクトを取得した」とみなされはしますが、
ただし、ワープルート、つまり、「正規ではないルート」を通っているので、
「やれること(オブジェクトの性格)」が「正規のルートの場合」とは「異なり」ます。
(・・・というイメージです。)
といっても、「便利に」「異なる」ので、「ウェルカム\(^o^)/」なんですが。(^^)

(A1形式だけじゃなくてR1C1形式でとか、使用された部分のみ、数個ずらした、等々・・・、といった形でのセル範囲の取得ができます。正規ルートでは、A1形式かつ一番ノーマルなセル範囲の取得となります。)

図には描いてないですが、以下のプロパティたちも、
「異なった性格を持つ・Rangeオブジェクト」をゲットするための
「ワープルート」です。

・AutoFilter.Range プロパティ(オートフィルターの適用セル範囲)
・Hyperlink.Range プロパティ(指定されたハイパーリンクの割り当てセル範囲)
・ListObject.Range プロパティ(テーブル機能が適用されたセル範囲)
・ListRow.Range プロパティ(テーブル機能が適用されたセル範囲の「行単位」)
・Range.Range プロパティ(親となるセル範囲の相対的なセル範囲、A1形式での相対)
・Range.Offset プロパティ(親となるセル範囲の相対的なセル範囲、行と列をズレる)
・Range.Resize プロパティ(親となるセル範囲の相対的なセル範囲、行と列を増やす)
などなど。

これらも、「いちおう正規ルートを通ってRangeオブジェクトを取得した」とみなされはしますが、いかんせん、ワープルート、つまり、「正規ではないルート」を通っているので、「やれること(オブジェクトの性格)」が異なります。(・・・というイメージです。)
もちろんこれらも、すべて、「便利に異なる」ので、「ウェルカム\(^o^)/」な「うれしい」ことになりますです。(・・・というイメージです。)

Rangeに限らず、「プロパティ」や「メソッド」には「同名のもの」がありますが、親の位置に来るオブジェクト(ヘルプ用語では「オブジェクト修飾子」といいます)が異なると、「同名のプロパティやメソッド」で取得したオブジェクトであっても、そのオブジェクトの動きが異なります。
(※「修飾」=Googleによると「ある語句によって他の語句の意味を限定すること。」だそうです。)

また、オブジェクト修飾子の名前(オブジェクト名)が省略されるとヘルプ検索時に正確な目的のヘルプページがヒットしません。
また、名前の異なる「プロパティ」や「メソッド」でも、同様に、修飾子を意識しないと、いろんな不都合が生じます。
なので、「プロパティ」や「メソッド」を語るときは、親の位置に来るオブジェクト(ヘルプ用語では「オブジェクト修飾子」)の名前も省略しないことをおすすめします。
(前述の「正規ルート」「ワープルート」のプロパティたちのように。)
省略してばかりいると、バカになります。
この「超」重要なことをちゃんと解説する書籍やWebページは、日本には1つも、ありません。(特に、僕が今まで見てきた中には。もしかしたらあるかもですけど。)
その意味で、日本のVBAのプロは、レジェンド、著者、編集者、出版社、講師、その他、含めて、「初心者目線ではない」「独学者目線でもない」「バカばっかり」です。
どうか、本当に、ご注意ください。

※参考記事
『だまされるな!RangeとCellsの使い分け!https://excel-ubara.com/excel5/EXCEL813.html』←どうしてもExcelで数万行のテーブルを頻繁に扱うデータベースなどを作らないといけなくなった、どうしても速度が出ない、というようなかた向けです。最初からリレーショナルデータベースとExcelとを分けて、かつ、連携で使う人にはさほど関係ありません。(「だまされるな!」はさすがに「極端な意見」なので、「自分のことだけが自動化できればいい、他人のファイルは扱わない、ファイルも同時に2つくらいしか扱わない、という方は参考程度で。もちろん勉強にはすごくなります。)
このWebページの巻末にある関連ページも、CellsとRangeの使い分けには、非常に参考になると思います。
今すぐ使えるかんたんEx Excelマクロ&VBA プロ技 BESTセレクション [Excel 2016/2013/2010/2007対応版] 』の「第3章 セルや行・列の指定方法を知ろう」「第4章 セルや行・列の操作方法を知ろう」がすごく参考になります。セルの「Selection」を「Range(××)」や「ActiveCell」などに書き換えることでいろいろに使えます。VBA初心者の方は買っておくととっても良いと思います。
Excel VBA逆引き辞典パーフェクト 第3版』の、「第1章 セルの操作」の部分もとても参考になります。上記2冊は、ExcelVBAビギナー必携だと思います。他の本は、以下に記した「真の基本の市販書籍」以外は、ビギナーさんは買わなくても良いと思います。(僕もビギナーですので)
この2冊は、決して「レベルとして簡単」ではないですが、初心者の立場に立ってできるだけ易しく書いてあります。また、初心者の方を「誤った道」に行かせないように作ってありまして、「ExcelVBAのレジェンドさんたちの初心者本やその関連団体の本」や「教科書を名乗る書籍」、「思想が極端なサイトの一部のWebページ」を読んで「騙される、勘違い人間」になる、よりは100倍良いかと思います。
いちばんやさしいExcelVBAの教本 人気講師が教える実務に役立つマクロの始め方 (「いちばんやさしい教本」シリーズ)
スラスラ読める Excel VBA ふりがなプログラミング (ふりがなプログラミングシリーズ)

番外:必須ではないですが、人によっては読みやすい本
図解! Excel VBAのツボとコツがゼッタイにわかる本 “超"入門

思想が極端だけど、ビギナー目線はとてもコスパアップになるサイト
「Go!Go! エクセルマクロを はじめよう!」http://www.start-macro.com/55/

目次
 ★ はじめに
 ★ Rangeプロパティ
 (01)「絶対」的な感じのセル操作(セル取得)について
   【参考】「For Each ~ Next 文」の基本的な書き方
 (02)「相対」的な感じのセル操作(セル取得)について
 (03)注意事項
 ★ Cellsプロパティ
 (01)「絶対」的な感じのセル操作(セル取得)について
 (02)「相対」的な感じのセル操作(セル取得)について
 (03)注意事項
 ★ RangeとCellsの混合
※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。
  
  
★ はじめに

Rangeオブジェクトを取得するには、RangeプロパティやCellsプロパティを使うことができます。
(Rangeオブジェクト=セル・セル範囲、取得≒選択)

ほかに、Range+Cells、Offsetプロパティ、Unionメソッド、でも取得できますが、ここではRangeプロパティとCellsプロパティだけの「取得」の雰囲気の違いを少しご説明します。

※僕自身が「ヘルプ」を読んで、そこに書いてあったことを自分なりにまとめなおして書いただけですので、間違いがあったらすみません。(でも、ここに書いてあることは、「For Each ~ Next 文」のこと以外は全部、ヘルプに書いてあります。なのでぜひヘルプも読んでみてください。。Web記事や市販書籍だけだと間違います。)
  
  
★ Rangeプロパティ

(01)「絶対」的な感じのセル操作(セル取得)について

RangeプロパティでRangeオブジェクトを取得する場合、基本的には、
・「A1形式」でのセル範囲の取得、
・シート上での一般操作的な選択をしたときのような取得、
ができます。

親オブジェクトの記述を省略するか(=エラーだらけになるので、基本、絶対にやってはいけない方法ですが)、あるいは逆に、親オブジェクトに明示的に「ActiveSheet」や「Worksheets(”シート名")」などを指定すると、次の(ア)~(エ)のような形のセル取得やセル範囲取得ができます。

(ア)「A1」とか「C1」といった感じで、「A1形式」での「単一セル」の取得(≒選択)が
  できます。(絶対的な感じです。)

  例

  Activesheet.Range("A1")
  Worksheets("Sheet1").Range("C1")

  Workbooks.Item("ブック名").Worksheets.Item("Sheet1").Range("C1")

  ↑ほんとはこのように「Item プロパティ」を省略しないほうがいいです。
   オブジェクトの階層構造を理解していないくせに格好つけて
   「Item プロパティ」を省略すると、
   「VBA的には」「バカ」になります(させられます。)
   ほんとは「Application.」も省略しないほうがいいです。
   巷の書籍で、そのような警告・超重要なことをしっかりと書いてある書籍は
   「日本には1冊も」「ありません」。Web記事も同様です。
   マジで嘆かわしいことです。
   今の講師・著者・出版社・編集者は、バカしかいません。

  Worksheets("Sheet1").Range("$C$1")
  と、「$」マークを追記して指定することもできます。

(イ)また、「A1:D10 」といった感じの、「A1形式」での「セル範囲」の取得(≒選択)も
  できます。
  ※Cellsではできません。

  例

  Worksheets("Sheet1").Range("A1:D10")

(ウ)名前の定義で定義した名前を使えます。(Cellsでは使えません。)
  例えば「A1:C3」のセル範囲に「ミニ範囲」という名前を、
  名前の定義の機能で付けたとすると、
  
  Activesheet.Range("ミニ範囲")

  と書くことで、「A1:C3」のセル範囲を指定した、という意味になります。

(エ)複数の範囲を一度に指定できます。(名前定義のセル範囲も同時に指定できます。)
  ※Cellsではできません。

  例えば、

  Activesheet.Range("B10,G3:G10,H4:K4,ミニ範囲")

  と書くと、B10、G3:G10、H4:K4、ミニ範囲((ウ)の「A1:C3」のセル範囲)、の
  セル範囲を指定したことになります。
  ちょうど、Ctrlキーを押しながら、複数のセル範囲を選択するようなことができます。

※注意事項

「親」の位置に来るオブジェクトの記述(ヘルプ用語では「オブジェクト修飾子」と呼びます)を省略すると、「親にActiveSheetが指定された」とみなされます。

※親の位置に来るオブジェクトの記述 =「オブジェクト修飾子=オブジェクト式やオブジェクト式を代入したオブジェクト変数、あるいは、関数やメソッドのオブジェクト型の戻り値」の意味です。

つまり、「ActiveSheetのセルやセル範囲」ということになります。今現在アクティブなワークシートのセルやセル範囲を指定できる・・・・、ということです。
当然ですが、アクティブでない(今・目に見えてない)ワークシートのセル・セル範囲は取得できません。
アクティブでないワークシートのセル・セル範囲を取得したい場合は、「ActiveSheet」ではなくて「Worksheets("シート名")」などの書き方で、親オブジェクトを「明示的に」指定する必要があります。

また、Rangeプロパティでは、「”A” & 変数」といった感じで、数字の部分を数値型の変数に置き換えることで、繰り返し処理(ループ処理)をセルの「縦方向にだけ」、やりやすいです。
横方向はやりにくいです。(「A1形式」の場合、横方向は数値ではなく、A、B、C、・・・とアルファベットで変数を使って指定しなければならないため。繰り返し処理ではアルファベットを使っての処理はもともと難しいです。)

ただ、「For Each ~ Next 文」を使って、
「For Each 空のオブジェクト変数 In Rangeでのセル範囲 ~ Next」
と書くと、「セル範囲のすべてのセル」を処理の対象とできますので、つまりは、セルの横方向への処理も、一応は可能となります。
例えば、1行分だけ横方向に処理をしたかったら、「In Rangeでのセル範囲」のところで
「In Range("A1:F1")」といったように指定すれば、A1セル~F1セルまで6個のセル・1行分だけを、すべて一括で 横方向に 処理できます。

そのほか(1行分でも複数行でも)、処理したくないセルがあれば、「For Each ~ Next 文」の中で、「何らかの基準でセルを区別するための、条件分岐の命令」を書けば、ある条件下のもと、特定のセルをとばしとばしにして一括処理ができます。

逆に言うと、もし処理速度にこだわらないなら、(後述のCellsプロパティを使わずに)Rangeプロパティ「だけ」で・しかも・「のちのちの可読性もよく・かつ・少ないプログラム量で」、セルの横方向の一括処理がしたいなら、原則としては 変数+繰り返し文 の利用ではなく「For Each ~ Next 文」を使うしかないことになります。
(そうしたほうが手っ取り早くて便利・・・、ということにはなります。ただ、処理速度についてはFor Each を使うほうが速いのか遅いのかはこちらでは未確認ですので、ご自分でも調べてみてください。もし遅かったとしても「数万個以上の数のセルを全部やる」ということでなければ、それほど大きな問題にはならないと思いますけど・・・。もちろん、マシンスペックにもよりますが・・・。それに、「In Rangeでのセル範囲」のところでは、「Worksheet.UsedRange プロパティやRange.CurrentRegion プロパティなどでのRangeオブジェクト指定」も使えます。「Rangeプロパティでのオブジェクト指定」だけしか使えないわけじゃないので、いろいろ使えるので、やはり「For Each ~ Next 文」は便利です。)
  
  
【参考】「For Each ~ Next 文」の基本的な書き方

  Dim 単一オブジェクト用の空のオブジェクト変数 As Object
         '( 「As Object」は「As 明示的なオブジェクト名」でも可。)

  For Each 宣言したオブジェクト変数 In コレクション

    単一オブジェクト変数に一括でやりたい処理
    条件分岐での処理を書いてもOK。

  Next 宣言したオブジェクト変数

ここで、「単一オブジェクト用の空のオブジェクト変数」を作った・用意したということは、「空のオブジェクト変数に実際のオブジェクトを代入する」ということを前提としているわけなのですが・・・、そしてそれをするには、通常は「Set ×× = ・・・」というSetを使った文が必要なのですが・・・、どうやらその作業は「For Each ~ Next 文」自体が「表には見えないけど裏で代わりに自動的にやってくれる」ようですので、ユーザー側としては「Set ×× = ・・・」という文は書かなくてもいいっぽいです。

なお、上記構文の「コレクション」の部分は、基本、コレクション(コレクションオブジェクト)を用います(=コレクション名を書きます)。これはWordでもAccessでも同じです。
ただ、Excelの場合は、「Rangeオブジェクト(セル範囲)」のように、「もともとコレクション的な構造を持つオブジェクト」でもOKのようです。例えば「Application.Selection」や「Windows(××).Selection」など・・・、つまり、「シート上で実際にドラッグなどで選択されているセル範囲」を使うこともできます。
(※「Application.」や「Windows(××).」は一応省略できます。省略すると、Application. を指定したとみなされます。ただし、「Worksheet.UsedRangeプロパティ」のように、「In のところで」 ということに限らず、「親オブジェクトを省略するとエラー」になってしまうようなものもあります。)

なお、「セル範囲」ということで言うと、「名前の定義」をしたセル範囲も使えます。
その「名前」を使うことで「For Each ~ Next 文」でセルの一括操作できます。
『 For Each 宣言したオブジェクト変数 In Range("名前の定義でつけた名前") 』
といったかたちでセルの一括操作ができます。
例えば
『 For Each ObjCel01 In Range("顧客一覧表") ~ Next ObjCel01 』
といった感じで使えます。
この場合、Rangeをセルのアドレスで表現しなくて済み、定義した表の名前で表現できるので、あとからプログラムを読み返すときに読み返しやすくなります。引継ぎ者もラクになります。

【補足】「For Each ~ Next 文」の利用シーンにてついて

「For Each ~ Next 文」は、基本、オブジェクト操作やオブジェクト変数操作に使う繰り返し文で、オブジェクトに対する一括処理がとってもしやすいです。

例えば、コレクションの中の単一オブジェクトを(最小限の少ないプログラムコードで)すべて走査してしてくれます。

また、コレクションの中の単一オブジェクトの「すべて」を走査してしてくれので、処理を適用したい・あるいは・したくない単一オブジェクトの条件を、IF文などで指定すれば済んでしまいます。

前述のとおり、コレクションだけでなく、セル範囲の中のすべてのセル、また、DAOやADOなどのオブジェクト(列とか行とか)にも利用できます。

ただし、一般変数=文字ベースデータの変数の繰り返し処理・一括処理には、基本、使えません。その場合は、「For i = ・・・Next i 文」などを使います。カウンタ用の変数も必要です。

(ただし、一般変数でもそれが「配列」になっていたら、配列に対しては使えます。For Each 文のヘルプページには『 配列やコレクションの各要素に対して、一連のステートメントを繰り返し実行する制御フローステートメントです。』と記載されています。)

ちなみにですが、「For Each ~Next 文」では、カウンタ変数は、「コレクション内の全ての単一オブジェクトたち」に対しては、基本的には、必要ありません。
その他の何かの処理・操作には必要となることがあるかもしれませんけど・・・。
カウンタ変数が基本、要らないのでとても便利です。

なお、『「もともと一括処理ができてしまうメソッド」では、細かいところの操作ができない・・・』といった場合には、「For Each ~Next 文」のほうが便利なことも少なくないかもしれません。適材適所で使えると思います。

  
  
次の例は、A1~F1までの1行の6つのセルをすべてチェックして、もしセルの値が1よりも大きかったら値の文字の色を赤にするプログラムです。

  
  
(02)「相対」的な感じのセル操作(セル取得)について

なお、RangeプロパティでRangeオブジェクトを取得する場合、そのRangeオブジェクトの親オブジェクトをWorksheetオブジェクトではなく、Rangeオブジェクトにすると、「相対的なアドレス」でのセルの扱いができるようになります。
つまり「セル範囲」の一番左上のセルが相対的に「A1」になります。
(=「セル範囲」の一番左上のセルを、「相対的な”A1”」とみなすことが可能となります。)

例:イミディエイトウィンドウでのテスト
? Activesheet.Range("A4:D7").Range("A1").Address
$A$4

この例のように、Rangeプロパティの1つ上の階層の(=1つ親の)オブジェクトがRangeオブジェクトだった場合に、その親オブジェクト側にて、例えば「A4:D7」といった感じで「連続するセル範囲」が指定されていた場合、「子」側の「A1」は相対的なものとなります。
つまり、「Range("A1")」の「"A1"」は、「A4:D7」というセル範囲の中の、一番左上のセルのアドレスを意味します。
なので、上記の例では、イミディエイトウィンドウ「$A$4」とに表示されます。
これは、正しい動作です。

一方、1つ親のRangeオブジェクトの記述が省略されれば、ActiveSheet上のすべてのセルがセル範囲としてみなされるので、その一番左上のセルは「$A$1」となります。

この「相対的な動き」は、「Range.Cells プロパティ」でも同じような「相対的な」動きをします。
  

なお、前項の(01)で説明したRangeプロパティは、もう少し細かく言うと、
「Worksheet.Range プロパティ」のことをさしており、
この項(02)で説明したRangeプロパティは
「Range.Range プロパティ」のことをさしています。
(「Worksheet.Range.Range」といったようなかたちになります)

実は「Rangeプロパティ」には、「いろんなRangeプロパティ」が存在します。
オブジェクトブラウザという機能で検索するとわかるのですが、
同じ「Range プロパティ」でも、
・AutoFilter.Range プロパティ(オートフィルターの適用セル範囲)
・Hyperlink.Range プロパティ(指定されたハイパーリンクの割り当てセル範囲)
・ListObject.Range プロパティ(テーブル機能が適用されたセル範囲)
・ListRow.Range プロパティ(テーブル機能が適用されたセル範囲の「行単位」)
・Range.Range プロパティ(親となるセル範囲の相対的なセル範囲)
・Worksheet.Range プロパティ(ワークシート上のテーブル機能否適用のセル範囲)
などなど
があり、一応、全部、「セル範囲」を表していて、
使える機能も「ほぼ同じ」なのですが、
でも、「完全に同じ」では「ありません」。

「少しずつ」、「使える機能」、「できること」、が異なります。
そこに注意が必要です。

なので、RangeはRangeでも、目的によって、
「親」の位置に来る「オブジェクト修飾子」を、
「明確に指定しないと」、
「目的と外れた動き」をしてしまいますので、
注意が必要です。

Rangeプロパティに限らず、「プロパティ」には、このように、
「同名だけど追うジェクト修飾子が異なるために動きが異なるものがある」、ので
VBA全体としても注意が必要です。特に独学時は。

たとえば、「AutoFilter.Range プロパティ」のことを知りたいのに、
ヘルプの検索でヒットしたヘルプページが
「ListObject.Range プロパティ」や
「ListRow.Range プロパティ」で
それに気づかずにそこを読んでコードを書いてしまうと
「エラーの連発」とか「意図しない動きになってしまう」という
不都合が出てしまいます。
そういった意味で、とても注意が必要です。
なので、ヘルプでプロパティやメソッドの検索をしたいときは、
「修飾子」のことも一緒に付加して、検索しないといけません。
例えば
「ワークシート上のテーブル機能否適用のセル範囲」について調べたいなら、
「Range プロパティ」という検索語句ではなくて、
「Worksheet.Range プロパティ」という検索語句で調べないといけません。
同様に、
「テーブル機能が適用されたセル範囲」について調べたい場合も、
「Range プロパティ」という検索語句ではなくて、
「ListObject.Range プロパティ」という検索語句で調べないといけません。

どれが親になるか、どれが目的のRangeプロパティか?は、
オブジェクトブラウザで「Range」で、完全一致で検索するのがまずは一番の近道となります。

これはもちろん、後述の「Cellsプロパティ」についても同様です。

巷の書籍やWeb記事には、それを説明したモノは「皆無」と言っていいので、
それらのサンプルコードを読んでもうまくいかない時やエラーが収まらない時は、
そこをチェックしてみてください。
Q&Aサイトで回答してもらったサンプルコードでも同じです。

  
  
(03)注意事項

親の位置に来るオブジェクトの記述(=オブジェクト修飾子)を省略すると、「ActiveSheet」を指定したとみなされ、「絶対的なアドレス」でのセル操作となります。

※親の位置に来るオブジェクトの記述 =「オブジェクト修飾子=オブジェクト式やオブジェクト式を代入したオブジェクト変数、あるいは、関数やメソッドのオブジェクト型の戻り値」の意味です。

ただし、「ActiveSheet」がワークシートじゃないと失敗します(エラーになります)。
例えばグラフシートがアクティブな時に、イミディエイトで
? Activesheet.Range("A4:D7").Range("A1").Address
とやるとエラーになります。

「ActiveSheet」が「単一オブジェクトなのかどうか?」を調べる方法
・オブジェクトブラウザで「ActiveSheet」で検索します。
・「検索結果」に出てきたものをどれでもいいのでクリック。
・下のほうの「説明ペイン」を見ます。
・「Property ActiveSheet As Object」とあるので「オブジェクト」とわかります。
・理由は、「説明ペイン」に「As Object」と表示されたものは、「オブジェクトである」と決まっていますので・・・。
  
  
  

★ Cellsプロパティ

(01)「絶対」的な感じのセル操作(セル取得)について

CellsプロパティでRangeオブジェクトを取得する場合、シート上の「すべてのセル」か、
シート上の「単一のセル」しか取得できません。
「範囲の指定・取得」はできないのです。
常に「すべてのセル」か、「1つのセルだけ」を指定(ゲット)します。
そこが「Rangeプロパティ」との一番大きな違いです。

親オブジェクトの記述を省略するか(=エラーだらけになるので、基本、絶対にやってはいけない方法ですが)、あるいは逆に、親オブジェクトに明示的に「ActiveSheet」や「Worksheets("シート名")」などと指定すると、次の(ア)~(イ)のような形のセル取得やセル範囲取得ができます。

(ア)「1,1」といった感じで、「R1C1形式」での単一セルの取得(≒選択)ができます。
  (絶対的な感じです。)

  以下の例では、ワークシート上の「1,1」のセル、
  つまり、1行目・かつ・1列目のセル、
  つまり、「A1」セル を指定しています。
  Activesheet.Cells(1,1)

(イ)「A1形式」における「A1:D10 」のような、「セルの」「範囲」の取得自体は
  「できません」。シート上の「すべてのセル」か、単一セルしか取得できません。

  (※:親オブジェクトの記述を省略すると、
   「親にActiveSheetが指定された」とみなされます。
    つまり、「ActiveSheetのセルやセル範囲」、ということになります。)

(Cellsプロパティを使って・・・、単一セルではなく「セル範囲」を取得したい場合は、「Range(Cells(1, 1), Cells(10, 10))」といった感じで、Rangeプロパティと組み込み合わせるしかないようです。
例:イミディエイトウィンドウでのテスト

? Activesheet.Range(Cells(1, 1), Cells(10, 10)).Address 

→ 結果 → $A$1:$J$10 
※J列は左から10列目。

ただし、Cellsプロパティでは、「1,1」を「変数,変数」といった感じで、数字の部分を数値型の変数に置き換えることで、繰り返し文(ループ処理)もいっしょに使うと、「セルの縦方向にも横方向にも」一括処理がやりやすいです。

Rangeプロパティでの「A1形式」のように「For Each ~ Next 文」を使わなくても、一応、カウンタ変数とその他の繰り返し文だけで、「横方向(列方向)」の一括処理ができます。
(それが良いことなのか悪いことなのかはTPOによって変わってくると思いますが…。)

Rangeプロパティでは、(「For Each ~ Next 文」を使わない場合に限っては)繰り返し処理を縦方向にしか扱いづらいですが、Cellsプロパティではセルの横方向にも、カウンタ変数を使って、自動的に高速に繰り返し処理(一括処理)ができることになります。
なので、例えば「セルの横方向に”だけ”、変数だけを使って一括処理したい」、といったような場合は、 もしかしたらRangeプロパティよりも便利なこともあるかもしれません。

ただ、横方向のセルを一括処理するのに、『「横方向も含めたすべてのセル」を一括処理しちゃってもかまわない・・・条件分岐すれば処理しないセルを選ぶこともできるから・・・速度もここでは関係ないし・・・』という状況であるなら、変数(Cellsプロパティ+変数+繰り返し文)、を使わずに、「For Each ~ Next 文」を使ってしまうほうがわかりやすいし、早いです。のちのちのコードの読み返しもしやすいかもです。

初心者のうちは慣れるまでは、セルの一括処理には、基本、『 Rangeプロパティと「For Each ~ Next 文」』を使うことをメインとし、特別な事情があるときだけCellsプロパティを使う・・・というようなかたちでも、もしかしたら・・・、良いのかもしれません。

逆に、慣れてきたらCellsプロパティをたくさん使って、プログラムをどんどん書いていけばいいと思います。Cellsプロパティを使うほうが処理速度が一応速いらしいですし、その他のメリットもあるようですので・・・

あと、「Cells」と書いたその前の部分に、ちゃんと修飾子を省略せずに書かないと、エラーが多発したり、探したいヘルプページが見つからない、見つかっても「他のCellsのページ」になってしまってエラーが解決できない、などが起こります。
それは「Range」の場合と同じです。
市販の書籍やWeb記事では教えてくれませんので、充分に、ご注意ください。
(ただ、Rangeの場合よりも同名のプロパティが少ないので、あまり問題にはなりにくいですが)

  
  
(02)「相対」的な感じのセル操作(セル取得)について

なお、CallsプロパティでRangeオブジェクトを取得する場合、そのRangeオブジェクトの親オブジェクトをWorksheetオブジェクトではなく、Rangeオブジェクトにすると、「相対的なアドレス」でのセルの扱いができるようになります。これはRangeプロパティの場合と同じです。
つまり「セル範囲」の一番左上のセルが相対的に「1,1」になります。
(=「セル範囲」の一番左上のセルを、「相対的な”1,1”」とみなすことが可能となります。)
ひいては、「”セル範囲内”での縦横両方向のループ処理」についても、Rangeプロパティよりもやりやすいです。

例:Rangeプロパティと同じセル範囲でのイミディエイトウィンドウでのテスト
? Activesheet.Range("A4:D7").Cells(1, 1).Address
$A$4

Cellsプロパティの1つ上の階層の(=1つ親の)Rangeオブジェクトにおけるセル範囲が「A4:D7」の場合、相対的な「R1C1形式」での「1,1」、つまり、セル範囲の一番左上のセルのアドレスは、「$A$4」となり、正しいです。
1つ親のRangeオブジェクトの記述が省略されれば、ActiveSheet上のすべてのセルがセル範囲として捉えられるので、その一番左上のセルは「$A$1」となります。

前項の(01)では、
「Worksheet.Cells プロパティ」や「Application.Cells プロパティ」のことをさし
本項の(02)では、
「Range.Cells プロパティ」のことをさしています。
  
  
(03)注意事項

1つ親のオブジェクトの記述を省略すると、「ActiveSheet」を指定したとみなされ、「絶対的なアドレス」でのセル操作となることもRangeプロパティと同じです。
こちらも、「ActiveSheet」がワークシートじゃないと失敗します(エラーになります)。
例えばグラフシートがアクティブな時に、イミディエイトで
? Activesheet.Range("A4:D7").Cells(1, 1).Address
とやるとエラーになります。
  
  
【「R1C1形式」について】
「R1C1形式」は以下のような値を使ってセルを特定します。
R=Row(行)=シートの「行番号」と同じ値
C=Colmun(列)=シートの列番号を数字に置き換えた値
           (A、B、C、・・・を順番に、1、2、3・・・と
            置き換えで数えたときのその値)
  
  
  

★ RangeとCellsの混合

前述のとおり、です。