![【VBAで使用回数が高い!】RangeとCellsの使い方を解説](https://pakajiblog.com/wp-content/uploads/2021/07/how-to-use-range-and-cells-1024x538.png)
![](https://pakajiblog.com/wp-content/uploads/2021/06/20210616_064220neko111-2.png)
RangeとCellsはどうやって使い分けたらいいの?
組み合わせることもできるの?
Excelにおいてセルの操作は必須ですよね。
VBAでもセルの操作や参照をするときはRangeとCellsは必須項目です。
そこでRangeとCellsのコードの書き方や使い分け、組み合わせなど使えるテクニックを紹介します。
・RangeとCellsのコードの書き方と使い分けが知りたい
・RangeとCellsを組み合わせると、どんな事ができるのか知りたい
・コードの書き方はRange(“A1参照形式”)、Cells(行番号,列番号)
・セルを固定して使う時はRange、セルに変数を入れて移動させる場合はCells
・範囲を指定する時はRange以外にCellsを使っても出来るので応用が利く
Range(“A1参照形式”) = Range(Cells(行,列),Cells(行,列))
まずはVBAのルールから知りたいという方はこちらへ
![](https://pakajiblog.com/wp-content/uploads/cocoon-resources/blog-card-cache/c2249fe6891a43d0b2e1c7b3cff7fcd7.png)
Rangeって何?
Rangeは単一もしくは複数セルを指定するときに使うオブジェクトです。
Rangeを使ってセルを指定するときは「A1参照形式」を使って表記します。
Range("A1参照形式")
![](https://pakajiblog.com/wp-content/uploads/2021/07/a1sansyo.png)
使用方法として、B3セルを選択したいときはRange(“B3”).Selectと表記すると選択できます。
![](https://pakajiblog.com/wp-content/uploads/2021/07/b3select.png)
1.固定したセルを指定するとき(移動しない)
2.セルの範囲を指定する時
Range(“A1参照形式:A1参照形式”)
![](https://pakajiblog.com/wp-content/uploads/2021/07/a1c3.png)
Cellsって何?
Cellsは基本的には単一セルのみを指定するオブジェクトです。
Cellsを使ってセルを指定するときは「行番号,列番号」を使って表記します。
Cells(行番号,列番号)
Excelシート上でセルの番地が数字で分かります。
「行番号」は横、「列番号」は縦になります。
![VBAの行と列を分かりやすく説明](https://pakajiblog.com/wp-content/uploads/2021/07/vba-rows-columns.png)
例えば、「C2」をCellsで表記したい場合はCells(2,3)になります。
あれ?順番が逆じゃないの!?と思われたかもしれませんが、Cellsでは(行,列)の順番になります。順番が覚えづらいと感じる方は下記の覚え方を参考にしてください。
![VBAのCellsの覚え方「Cellsは行列横入り」](https://pakajiblog.com/wp-content/uploads/2021/07/vba-how-to-remember-cells.png)
![VBAにおけるCellsの使用方法](https://pakajiblog.com/wp-content/uploads/2021/07/usingcells.png)
RangeとCellsの使い分け
・Rangeは「A1参照形式」を使って、英語と数字でセルの番地を表すので、パッと見て分かりやすい。
・Cellsは「行番号と列番号」を使って、数字のみでセルの番地を表すので、見にくいが応用が利く。
例えば、
![](https://pakajiblog.com/wp-content/uploads/2021/07/rangekotei1.png)
行番号と列番号を数えて、Cellsでコードを書きますか?面倒ですよね。
![](https://pakajiblog.com/wp-content/uploads/2021/07/rangekotei2.png)
Rangeを使って書く方が多いと思います。
以上のように、「このセルに入力や参照する。後は変えない!!」という時はRangeが見やすくて便利です。
しかし、処理毎にセルを変えたいという時はどうでしょうか?
Rangeだと毎回指定するコードを書くことになり、とても面倒です。
そこで、Cellsの登場です。
Cellsは数字でセルの番地を表すので、行番号や列番号に変数を入れる事でラクにセルの移動が可能になります。どういう事か疑問に感じると思うので、下記の例を参考にしてください。
![](https://pakajiblog.com/wp-content/uploads/2021/07/move-cells.png)
![](https://pakajiblog.com/wp-content/uploads/2021/07/namaecells.png)
Cellsを使うとラクですよね。
このような処理をRangeオブジェクトですると大変面倒になってしまいます。
Rangeを使って無理矢理セルの移動をするコードを書いてみましたが、配列などまだ紹介していない方法を使い、かつ面倒なのでお勧めしません!面倒だと思って頂ければ良いです。
![](https://pakajiblog.com/wp-content/uploads/2021/07/idourange.png)
・Rangeは固定して使うセルや範囲を指定する時に使う
・Cellsは変数を入れて移動するセルに使う
RangeとCellsの組み合わせ
範囲を指定する時はRangeを使うと言いましたが、
![](https://pakajiblog.com/wp-content/uploads/2021/06/20210616_064220neko111-150x150.png)
「Cellsを使って、セルの範囲を指定したい時はどうするの?」
そんな時は、「RangeとCellsを一緒に使っちゃう!」と上手くいきます。
![Cellsを使ってセルの範囲を指定したいときに使う方法](https://pakajiblog.com/wp-content/uploads/2021/07/range-using-cells-1.png)
Range(Cells(行,列),Cells(行,列))を応用するとこんな事もできます。
![](https://pakajiblog.com/wp-content/uploads/2021/07/haninamae.png)
![](https://pakajiblog.com/wp-content/uploads/2021/07/using-three-ranges.png)
少し難しいかもしれませんが、コードを書いていくと見なくても出来るようになります。
是非トライしてみてください。
コメント