【VBA入門】Rangeでセルの範囲指定(Cellsとの使い分けも解説)

頻繁な操作ほど自動化を!Rangeでセルを範囲選択

Excelで作業するとき、セルを範囲選択するという操作はほぼ必ずといっていいほど発生しますよね。よく行う操作ほどVBAで自動化するメリットが多いといえます。

VBAにてセルを選択する場合、検索してみるとRangeとCellsというオブジェクトとプロパティが見つかります。

でも、いったいどっちがどうなのか? 使い分けが難しいですよね。この記事では「Rangeとは何か」「RangeとCellsの違い」という基本的な内容から、

  • Resizeでセルの範囲を変更する方法
  • Offsetでセルの範囲を指定する方法
  • Valueで値を取得変更する方法
  • 範囲をクリアする方法範囲をコピーする方法
  • 範囲を配列に変換する方法Findで範囲を検索する方法
  • Sortで範囲をソートする方法

という応用的な内容まで解説します。

本記事を読み終える頃には、目的に応じたRangeとCellsの使い分けや、Rangeを利用した範囲選択が自由自在にできるようになっていますよ!

Rangeとは

Rangeとは、セルの範囲を指定するときに使うオブジェクトです。

例えばA3からB5のセルを赤にしたいとき、A3からB5までドラッグして範囲指定してから赤にしますよね。その範囲を指定する操作をコードで実現します。

Rangeで選択した後は、もちろんセルの色だけでなく文字色を変えたり罫線をいれたりできます。範囲を選択するモノとしては、Cellsプロパティもあります。

何が違うのか、比較しながら見てみましょう。

Rangeはココが違う!

RangeはCellsと比較すると、以下の特徴があります。

  • 範囲につけた「名前」で呼び出せる
  • 複数の範囲が指定できる
  • 開始セルと終了セルを指定できる

Cellsはココが違う!

一方、Cellsは以下の特徴があります。

  • 変数で位置を指定できる
  • シート全体を指定できる


他にもありますがこの辺りが主な特徴ですね。

使い分け例

ひととおり機能が分かったところで、どういった場合にどちらを使い分けるのかを見てみましょう。

使い分け1:範囲は固定か変動か?

帳票や伝票であればレイアウトが変わらないのでRangeが適しています。実行してみないと範囲が決まらない場合はCellsを使います。

使い分け2:範囲は1つか複数か?

A3からB6と、C9からD12といった、複数の範囲を選択するのはRangeにしかできません。

使い分け3:シート全部、行または列まるごとの場合

無条件でこのような指定をする場合、Cellsを使います。

これくらいにして、実際の使用例を次から見ていきます。

Rangeの使い方

早速、Rangeの使い方を順に見ていきましょう!

Selectでセルを指定する方法

1つだけセルを選択したいとき、このようになります。

[書式] [使用例] [実行結果]

range01

VBEで実行すると、A3が選択されていることがわかります。

背景色をつけるときはこうです。

[使用例] [実行結果]

range02

複数のセルを範囲で指定する方法

先ほどは1つのセルを選択しましたが、今度は開始と終了を指定して範囲指定をしましょう。

[書式] [使用例] [実行結果]

range03

もちろん、先ほどの例を応用して、範囲内を着色することも可能です。

複数の独立したセルを指定する方法

開始セル1から終了セル1、開始セル2から終了セル2といった感じで、複数の範囲も選択できます。

[書式] [使用例] [実行結果]

range04

2つ以上の範囲も選択可能です。

範囲につけた名前で指定する方法

範囲に名前をつけることができ、さらにRangeでその名前を指定できます。A3からB5をドラッグして反転させたのち右クリックして「名前の定義」を選択してください。

そこで名前を「テスト」とします。その名前付き範囲をRangeで指定することも可能です。

[書式] [使用例] [実行結果]

range05

セルを変数で指定する方法

Rangeメソッドにおいて、変数を使って範囲選択することも可能です。

[使用例] [実行結果]

range06

ただし、変数を使った可変の範囲を指定するときは、Cellsを使うのが一般的です。

[使用例] 実行結果は同じです。

Resizeでセルの範囲を変更する方法

一度選択した範囲のサイズを変えることだってできます。A3からB6という4行2列の範囲選択を、5行5列に広げましょう

[書式] [使用例] [実行結果]

range07

実行後の結果しか見えないので動作を実感できませんが、A3からB5の範囲がA3を起点として5行5列になったのがわかります。

Offsetでセルの範囲の位置を変更する方法

A3からB6まで指定した範囲を、大きさはそのままで動かすことができます。

[書式] [使用例] [実行結果]

range08

これも結果のみの確認です。A3からB5の範囲が、A3を起点として2行3列動いたのがわかります。

Cellsを使ってセルを指定する方法

Cellsを使ってセルを指定する方法はこちらで詳しく解説しているので、ぜひ確認してください。

【VBA入門】Cellsでセルを指定(変数などRangeとの使い分けも解説)
更新日 : 2019年4月17日

Valueで値の取得と変更をする方法

RangeオブジェクトからValueプロパティを呼び出すことで、セルの値を取得もしくは変更することができます。

サンプルコードで確認しましょう。

実行結果:
range09

範囲をクリアする方法

指定したセル範囲をクリアするにはRangeオブジェクトのClearメソッドを使います。クリアする対象によって使うメソッドが変わってきます。目的にあったメソッドを使うようにしましょう。

メソッド説明
Clear全て
ClearCommentsコメント
ClearContents値と数式
ClearFormats書式
ClearNotesコメント
ClearOutlineアウトライン
ClearHyperlinksハイパーリンク

ClearHyperlinksについては、Excel2010以降で使用できます。サンプルコードで確認しましょう。

以下のような状態をクリアします。

range10

実行結果:
range11

範囲をコピーする方法

指定した範囲をコピーする方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。

VBAでセル・シート・ファイルをコピー(値、書式のみも解説)
更新日 : 2019年4月21日

範囲を配列に変換する方法

指定した範囲の値を配列に格納したい場合があります。範囲の値を配列に格納する方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】配列総まとめ(初期化、ループ操作、コピー、結合、比較)
更新日 : 2019年4月18日

Findで範囲を検索する方法

指定した範囲にある値が含まれているか検索したい場合があります。そんな場合はFindメソッドを使って検索します。

Findメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Find、FindNextで検索(完全一致、部分一致、複数一致)
更新日 : 2019年4月18日

Sortで範囲をソートする方法

指定した範囲を順番に並べ替えたい場合があります。そんな場合はSortメソッドを使って並べ替えます。

Sortメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Sortでセル範囲内をソートする(並び替える)方法
更新日 : 2019年4月23日

まとめ

この記事では、Rangeオブジェクトについて解説しました。Excelの操作においてセルを範囲選択することは多々あるので、これがVBAによって自動化できればとても便利ですよね。

今回はセルの着色しか触れませんでしたが、その他にもできることは沢山あります。ぜひ、みなさんも試してみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

本多 農

本多 農

関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説