【Excelマクロ応用術】VBAで行数と列数が不明な場合の範囲選択

スポンサーリンク

アイキャッチ画像

この記事では、行数や列数がわからない時の表の範囲指定の方法について紹介しています。

 

これからVBAを使い始めるという方は以下の記事をご覧ください。

 

さっそくですが、以下のようなシートがあるとします。

表

 

この表のセルの範囲を特定する方法は、以下のコードです。

    ' 最終行の行数をmaxrowに代入
    maxrow = Range("A1").End(xlDown).Row

    ' 最終列の列数をmaxcolumnに代入
    maxcolumn = Range("A1").End(xlToRight).Column
    
    '最終行、最終列を利用して、範囲指定
    Range(Cells(1, 1), Cells(maxrow, maxcolumn)).Select

 

手順は以下の通りです。

①最終行の行番号を調べる

②最終列の列番号を調べる

③起点から取得した行・列番号で範囲指定

 

①最終行の行番号を調べる

    ' 最終行の行数をmaxrowに代入
    maxrow = Range("A1").End(xlDown).Row

まず初めに、最終行の行番号を取得します。maxrowという変数に行番号を代入します。

 

ここで「.End(xlDown)」というプログラムを使っていますが、これは「Ctrl + ↓」と同じです。

 

そのため、Range("A1")を起点に文字が入力されているセルの一番下まで移動してくれます。

 

そして、「.Row」で行番号を取得することができます。

 

②最終列の列番号を調べる

    ' 最終列の列数をmaxcolumnに代入
    maxcolumn = Range("A1").End(xlToRight).Column

次に、最終列の列番号を取得します。maxcolumnという変数に列番号を代入します。

 

先ほどの列番号取得の場合と似たような「.End(xlToRight)」というプログラムを使っていますが、これは「Ctrl + →」と同じです。

 

Range("A1")を起点に文字が入力されているセルの一番右まで移動してくれます。

 

そして、「.Column」で列番号を取得することができます。

 

補足

先ほど、登場した「.End(xlDown)」や「.End(xlToRight)」は下方向と右方向でした。他に上方向や左方向への移動もあります。詳細は以下の通り。

.End(xlUp) Ctrl + ↑
.End(xlDown) Ctrl + ↓
.End(xlToRight) Ctrl + →
.End(xlToLeft) Ctrl + ←

 

③起点から取得した行・列番号で範囲指定

    '最終行、最終列を利用して、範囲指定
    Range(Cells(1, 1), Cells(maxrow, maxcolumn)).Select

 最後に、取得した行・列番号を利用して範囲を指定します。Range()を使って、セルを指定して、Selectで範囲指定します。

 

Range()の中身を解説すると、Cells(1, 1)がセルA1を示しています。また、今回の例だと、maxrow=7、maxcolumn=5 なので、Cells(7, 5)となりセルE7を示しています。

 

これで、セルA1からセルE7の範囲を指定することができます。最後にマクロ実行後の表を示すと以下のようになります。

マクロ実行後

 

以上、列数と行数が不明な場合の範囲選択でした。

 

以下、VBAを学ぶのにおすすめの書籍となっています。ぜひ参考にしてください。