Excel VBA セルの最終行と最終列の取得

ExcelVBA-基礎編

今回は最終行と最終列の取得方法をご説明します。

プログラムを書く上で非常に使用頻度が高いと思います。

動的な処理を組み込むには必須のコードとなりますので、暗記しても良いくらいの内容です。

取得方法はいくつか方法がありますので、順番にご説明します。

ぜひ覚えてみてください。

その他のセルの操作は下記記事をご覧ください。

1.最終行・最終列の取得方法

基本的にExcelショートカットの「Ctrl+テンキー(下)」、「 Ctrl+テンキー(上) 」、

「 Ctrl+テンキー(右) 」、 「 Ctrl+テンキー(左) 」をVBAで再現している感じです。

変数に格納する場合は、「Long(数値型)」がいいと思います。

主な取得方法は以下の通りです。

  • 下方向に最終行を取得する
  • 上方向に最終行を取得する
  • 右方向に最終列を取得する
  • 左方向に最終行を取得する
  • 使用済みセルから最終行・最終列を取得する

この5パターンを覚えておくと大抵の作業には対応可能ではないかと思います。

ですが、どれも完璧ではないので、ご自身の環境で一工夫しながらご使用ください。

2.最終行の取得

下方向に最終行を取得

Excelショートカットの「Ctrl+テンキー(下)」 と同じです。

MaxRow = Range("A1").End(xlDown).Row

もしくは

MaxRow = Cells(1,1).End(xlDown).Row

の様に記載します。

「Range(“A1”)」のAや、「Cells(1,1)」の(1,1)の赤い方を変更すると取得するを変更できます。

このコードは途中に空白があると、そこで停止してしまい、最終行取得に失敗します

上方向に最終行を取得

Excelショートカットの「Ctrl+テンキー(上)」 と同じです。

MaxRow = Range("A1048576").End(xlUp).Row 

もしくは

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

の様に記載します。

「Range(“A1”)」のAや、「Cells(1,1)」の(1,1)の赤い方を変更すると取得するを変更できます。

このコードは途中にデータの入力されたセルがあると、そこで停止してしまい、最終行取得に失敗します

また、Rangeの書き方はExcelのバージョンによって、最終行が変わった場合にエラーが発生する可能性がありますので、Cellsの書き方をおすすめします

3.最終列を取得

右方向に最終列を取得

Excelショートカットの「Ctrl+テンキー(右)」 と同じです。

MaxCol = Range("A1").End(xlToRight).Column

もしくは

MaxCol = Cells(1,1).End(xlToRight).Column

と記載します。

「Range(“A1”)」の1の部分や、「Cells(1,1)」の(1,1)の赤い方を変更すると取得するを変更できます。

こちらも同様に、途中に空白があるとそこで停止してしまい、最終列取得に失敗します。

左へ最終列を取得

Excelショートカットの「Ctrl+テンキー(左)」 と同じです。

MaxCol = Range("XFD1").End(xlToLeft).Column

もしくは

MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column

と記載します。

「Range(“A1”)」の1の部分や、「Cells(1,1)」の(1,1)の赤い方をを変更すると取得するを変更できます。

こちらも同様に、 途中にデータの入力されたセルがあると、そこで停止してしまい、最終列取得に失敗します。

また、Rangeの書き方はExcelのバージョンによって、最終列が変わった場合にエラーが発生する可能性がありますので、Cellsの書き方をおすすめします。

4.使用されているセルから最終行と列を取得

上でご紹介した4種類の最終行、最終列の取得とは少し違います。

使用されているセルの範囲を取得して、その最終行と列を取得します。

使用されているセルの範囲は「UsedRangeプロパティ」で取得出来ます。

ここでも注意が必要で、罫線などデータ以外で使用していても、範囲に含まれます。

また、非表示の行列やオートフィルタで隠れている範囲も含まれます。

MaxRow = UsedRange.Rows(.Rows.Count).Row
MaxCol = UsedRange.Columns(.Columns.Count).Column

こちらも、含まれる範囲を考えると確実にデータが入力されている最終行、最終列を取得出来るわけではありません。

5.まとめ

5つの最終行、最終列の取得パターンをご紹介しましたが、基本的にはCellsの方法で「上方向に最終行を取得」と「左へ最終列を取得」の列を便宜指定して、使用するのが一番使い勝手がいいと思います。

タイトルとURLをコピーしました