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

【VBA】表全体や作業済みの領域を選択する【入門】

  • 2019年2月28日
  • 2019年4月5日
  • VBA
  • 72回
  • 1件
VBA NO IMAGE

みなさん、こんにちは!

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

前回の記事では、VBAでの

Endプロパティで端のセルや最終行・最終列の取得方法

範囲の中から更に特定の範囲を選択する方法を解説しました。

今回の記事では、

表の全体を選択する取得する方法

作業済みの範囲を取得する方法

表の中の一部の範囲以外を取得する方法

以上を紹介します。

表全体を選択する

対象のセルを含み、連続してデータが入力されている長方形の範囲を「アクティブセル領域」といいます。

アクティブセル領域を表すRangeオブジェクトを取得すると、作成された「表の全体」を操作対象にすることができます。

・特定のセルを含む表の全体を範囲選択する

特定のセルを表すRangeオブジェクトのCurrentRegionプロパティで、そのセルを含むアクティブセル領域を表すRangeオブジェクトを取得することができます。

・実行結果

アクティブセルを含む表全体を選択する

特定のセルではなく、アクティブセルのアクティブセル領域を表すRangeオブジェクトを取得することで、マクロ実行時に、操作対象となる標をユーザーに指定させることができます。

作業済みの領域を選択する

ワークシート上で、データの入力や書式の設定など、何らかの作業を行った領域をRangeオブジェクトとして取得し、この範囲を対象に操作することができます。

ただし、先頭行や先頭列を空けて入力を行った場合は、それらは作業済みの領域に含まれません。

何らかの作業を行った領域を選択する

ActiveSheetプロパティで、作業中のワークシートを表すWorkSheetオブジェクトが取得できます。そのUsedRangeプロパティで、対象のワークシートの作業済みの領域を表すRangeオブジェクトを取得することができます。

・実行結果

作業済みの領域のとは?

「作業済みの領域」とは、データの入力や書式の設定など、なんらかの作業を行ったセルの中で、上下左右それぞれの端のセルを含む長方形の範囲の事です。

先頭行や先頭列を空けて入力を始めた場合、それらの行や列は作業済みの領域に含まれません。

また最後の位置にある行や列を削除したり、末尾のれるのデータと書式をすべてクリアしたりすると、UsedRangeプロパティで取得される領域も小さくなります。

表の一部の範囲を選択する

対象の標の一部の範囲だけをRangeオブジェクトとして取得する方法を紹介します。表の見出しや合計行、合計列などを除外して、データが入力されている範囲だけを選択します。

表の見出し行を除いて選択する

特定のセルを含む表の範囲から見出し行を除いたセル範囲を、Rangeオブジェクトとして取得します。

指定したセルを基準とした「CurrentRegionプロパティ」で表全体の範囲を選択します。

次に、その選択範囲を「Offsetプロパティ」で行を下に1つずらして再選択します。さらに、「Resizeプロパティ」で対象範囲を1行分減らして再選択します。

・実行結果

見出し行と合計行を除いて選択する

見出し行だけでなく、表の範囲の末尾に付く合計行も除いて選択する場合は、上記のコードの、Resizeプロパティを1行から2行に変更すれば可能です。

・実行結果

見出し行と合計行・合計列を除いて選択する

さらに、通常は表の範囲の右端に付く合計行も除いて選択するには「Resizeプロパティ」の引数に「ColumnSize」を指定します。

・実行結果

まとめ

今回は表の全体を選択する方法と作業済みの領域を選択する方法を紹介しました。

表の全体と作業済みの領域を選択してさらに範囲を絞って選択すれば、作業の幅が広がるので、

選択方法の一つとして覚えておくと簡単に記述する場面がありますよ。

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

【VBA】Endプロパティで端のセルや最終行・最終列を取得しよう【入門】

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

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

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