注目キーワード
  1. VBA
  2. 関数
  3. ショートカット

【VBA】セル・行・列の範囲選択について【入門】

  • 2019年2月26日
  • 2019年4月4日
  • VBA
  • 39回
  • 1件
VBA NO IMAGE

みなさん、こんにちは!

VBAでExcelの自動化をしていますか?

前回の記事ではVBAでの

単一のセルや行・列の選択方法について解説しました。

今回の記事では

2つのセルを指定してセル範囲のRangeオブジェクトの取得方法

行・列の範囲の取得方法

指定した範囲からずらした範囲の取得方法

以上を紹介していきます。

Excelのワークシート上での選択方法と一部違う点があるので混同しないようにしましょう。

始点と終点を指定して選択する

2つのセルを指定することで、それらを左上から右下とする長方形のセル範囲を、「Rangeオブジェクト」として取得できます。

また、指定した2つのセル範囲を含む長方形のセル範囲を取得することもできます。

・範囲の始点と終点を指定して選択する

「Rangeプロパティ」には、2つの引数を指定して使用することもできます。セル番地を示す2つの文字列を指定すると、それらを左上端と右下端とする長方形のセル範囲を「Rangeオブジェクト」として取得できます。

・実行結果

引数にRangeオブジェクトを指定する

Rangeプロパティの引数には、セル番地を表す文字列以外にも、Rangeオブジェクトを表すプロパティを指定する事もできます。

2つの範囲を含む長方形の範囲を選択する

「Rangeプロパティ」の2つの引数に単独のセルではなくセル範囲を指定した場合は、その2つのセル範囲を比較して、上下左右のもっとも端にあるセルを含む長方形の範囲が取得できます。

・実行結果

セル範囲と選択範囲を含む長方形の範囲を選択する

・実行結果

「Rangeプロパティ」の引数に、選択範囲を表す、Selectionプロパティを指定することもできます。またActiveCellを指定することも可能です。

行数と列数を指定してセル範囲を選択する

特定のセルを基準として、そこから指定した行数×列数のセル範囲を「Rangeオブジェクト」として取得することも可能です。

指定した行数×列数のセル範囲を選択する

特定のセルを左上端として、指定した行数と列数のセル範囲を「Rangeオブジェクト」として取得するには、基準のセルを表すRangeオブジェクトの「Resizeプロパティ」を使用します。

引数は、行数を「RowSize」、列数を「ColumnSize」で指定します。

いずれの引数も省略可能で、省略した場合は対象のRangeオブジェクトの行数・列数が保持されます。

・実行結果

セル範囲を対象にResizeプロパティを使用する

「Resizeプロパティ」は、単独のセルだけではなく、長方形のセル範囲を表す「Rangeオブジェクト」を対象に使用することも可能です。

この場合、長方形の左上端のセルを基準として、セル範囲を指定した行数×列数に変更した「Rangeオブジェクト」が取得できます。

現在の選択範囲を広げる

選択範囲を表す「Rangeオブジェクト」を対象に、Rowsプロパティを引数なしで指定すると、対象のセル範囲を行ごとのグループに区切ったRangeコレクションが取得できます。

これに「Countプロパティ」を指定すると、コレクションに含まれる行を表すRangeコレクションの数が調べられます。

こうして求めた選択範囲の行数に広げたい行数を加えてResizeプロパティの引数にRowSizeに指定します。

また列を広げたい場合は同様のコードでRowsプロパティの代わりにColumnsプロパティを使用し、Resizeプロパティの引数にColumnSizeを指定します。

・実行結果

基準から相対的なセル参照でセル範囲を選択する

Rangeオブジェクトを対象にRangeプロパティを使用すると、対象のセルを基準とする相対的なセル参照で、セル範囲を指定する事ができます。

基準のセルから指定した方向にずらして選択する

特定のセルを基準に、指定の行数だけ上下に、または列数だけ左右にずらしたセルを「Rangeオブジェクト」として取得できます。行と列をずらす量は一度に指定することが可能です。

上下左右にずらしたセルを選択する

特定のセルから上下左右に指定の量だけずらじた位置にあるセルをRangeオブジェクトとして取得するには、対象のRangeオブジェクトのOffsetプロパティを使用します。

引数として、ずらす行数を「RowOffset」、列数を「ColumnOffset」で指定します。

正の数は下または右方向にずらし、負の数は上または左方向にずらします。引数を省略した場合はずらしません。

・実行結果

セル範囲を対象にOffsetプロパティを使用する

Offsetプロパティは、単独のセル以外にも長方形のセル範囲を表す「Rangeオブジェクト」に対して使用することもできます。この場合は、対象のセル範囲全体の行数×列数を維持したまま、指定方向へずらしたセル範囲を、Rangeオブジェクトとして取得できます。

選択範囲を上下左右にずらす

Offsetプロパティを利用して、選択範囲をその行数×列数のまま、Selectionプロパティで取得した選択範囲を表すRangeオブジェクトに対して、Offsetプロパティを使用してずらします。

・実行結果

選択範囲を拡張する

RangeプロパティとOffsetプロパティを組み合わせると、現在の選択範囲を拡張できます。Rangeプロパティの2つの引数として、Selectionプロパティで取得したRangeオブジェクトと、それをOffsetプロパティでずらしたRangeオブジェクトを指定して、拡張したRangeオブジェクトを取得して改めて選択します。

・実行結果

前の記事から読み直す場合はこちらです。

【VBA】セル・行・列の指定方法について【入門】

VBAの記事一覧はこちらからです。

【基礎から学べる】ExcelマクロとVBA【入門】

NO IMAGE
最新情報をチェックしよう!