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

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

  • 2019年2月27日
  • 2019年4月4日
  • VBA
  • 9回
  • 1件
VBA NO IMAGE

みなさん、こんにちは!

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

前回の記事ではVBAでの

セルや・行・列を範囲で選択する方法を解説しました。

今回の記事では、

Endプロパティで入力済みの端を取得する方法

最終行・最終列を取得する方法

セル範囲の中から更に範囲を指定する方法

以上を紹介します。

データの長さや、表の範囲が毎回、同じでない場合には、入力済みの範囲や、最終行・最終列といった

指定方法はよく使いますので、取得方法をマスターしましょう!

表の上端・下端・左端・右端のセルを選択する

上から順番にデータを入力している例で、一番下にある入力済みのセルを、Rangeオブジェクトとして取得することができます。同様に、連続してデータが入力されているセル範囲の上端・下端・左端・右端の各セルを取得することもできます。

入力済みのセルを選択する

Rangeオブジェクトの「Endプロパティ」を利用すると、基準のセルから指定した方向の終端のセルをRangeオブジェクトとして取得できます。終端のセルとはデータが連続して入力されている場合は、空白のセルの手前のセル、空白セルが続いている場合には次にデータが入力されているセルか、その方向のワークシートの端のセルのことです。

 

定数 方向
xlDown
xlUp
xlToRight
xlToLeft

Endプロパティでは、引数のDirectionに終端のセルを探す方向を4種類の定数のいずれかで指定します。

・実行結果

シートの最終行から下端のセルを選択する

Endプロパティで上のセルから下方向の終端のセルを取得しても、途中のセルが空白の場合は、入力範囲の下端を取得できない可能性もあるため、その列の一番下にある入力済みのセルを確実に取得するには、シートの最終行から上方向の終端のセルを取得します。

・実行結果

アクティブセルから入力済のセルまでを選択する

RangeプロパティとEndプロパティを組み合わせて、アクティブセルから終端のセルまで選択範囲を拡張します。Rangeプロパティの2つの引数に、ActiveCellプロパティで取得したRangeオブジェクトと、Endプロパティで取得した終端のセルを表すRangeオブジェクトを指定し、取得したRangeオブジェクトを選択します。

表の特定の行・列の範囲を選択する

対象のセル範囲の中で、特定の行や列のセル範囲を指定し、Rangeオブジェクトとして取得することでできます。この操作では、RowsプロパティやColumnsプロパティをRangeオブジェクトを対象として使用します。

表の特定の行を選択する

表の中で、指定した行を表すRangeオブジェクトを取得するには、表の範囲を表すRangeオブジェクトのRowsプロパティで行単位に区切ったRangeコレクションを取得して、インデックスとして目的の行の順番を表す数値を指定します。

・実行結果

選択範囲の特定の列を選択する

Selectionプロパティで取得した選択範囲を表すRangeオブジェクトのColumnsプロパティを利用して、選択範囲の左から指定した順序の列を選択します。選択するのが1列だけなら、インデックスとして目的の列の順番を表す数値を指定します。

・実行結果

選択範囲の複数列を選択する

選択範囲内の複数列を選択したい場合は、Columnsプロパティを使用し、インデックスとしてその列の範囲を表す参照文字列を指定します。参照文字列は対象範囲の左端の列を「A列」として指定します。「C:F」とした場合は、実際のC列からF列ではなく、選択範囲の「3列目~6列目」が指定されます。

・実行結果

セルの行全体・列全体を選択する

対象のセルを含む行全体・列全体を、Rangeオブジェクトとして取得することができます。Rangeオブジェクトを対象とする操作の中には、行全体・列全体に対してしか実行できないものがあるため、個別のセルの選択状態を行全体・列全体に広げます。

特定のセルを含む行全体を選択する

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

・実行結果

特定のセルを含む列全体を選択する

特定のセルを含む列全体を表すRangeオブジェクトを取得するには、EntireColumnプロパティを使用します。ここでは、ActiveCellプロパティでアクティブセルを表すRangeオブジェクトを取得し、そのセルを含む列全体を選択します。

・実行結果

選択範囲を含む列全体を選択する

複数の列に渡るセル範囲を表すRangeオブジェクトのEntireColumプロパティで、その複数の列全体を表すRangeオブジェクトを取得できます。Selectionプロパティで選択範囲を表すRangeオブジェクトを取得し、その列全体を選択します。

・実行結果

まとめ

今回は、Endプロパティで最終行・最終列の取得方法や入力済みの端のセルの取得方法

指定した範囲の中から特定の範囲の取得方法を紹介しました。

表やデータの長さが毎回、異なる場面は多くあるのでEndプロパティは使用する機会が多いので繰り返し

使って覚えてください。

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

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

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

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

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