VBAでのプログラミングに慣れてくると、上から順にループを回したくなります。(エンジニアっぽい言い方笑)
下の図でいうと、最下行である、16行目を取得したいという場合に利用するコードです。
最下行の取得方法はたくさんあるのですが、これだけ覚えておけば事足りるコードを紹介します。
最下行を取得する実例
リストがあり、その一番下の行番号を取得したいということが今回のやりたいことです。
ここでは、松岡くんのIDのセル番地A16なので、行番号は16を表示したいというのが今回のやりたいことです。
最終行を取得するコード
最終行(または最下行とも言います)を取得する場合には、以下のコードを使います。
Sub 最下行取得() Dim ws As Worksheet Dim endRow As Long Set ws = ThisWorkbook.Worksheets("ワークシート名") endRow = ws.Cells(Rows.Count, 1).End(xlUp).Row End Sub
5行目:ワークシート名は最下行を取得したいリストがあるシート名を記載しましょう。
6行目:「ws.Cells(Rows.Count, 1)」の「1」は1列目を指しています。1行目がヘッダーとなっている場合はそのままにしておきましょう。IDの列の一番下の行番号を取るという意味合いです。ここを「2」とすれば、2列目(B列)を選択することができます。
私がプログラミング時に使っているのは基本的にこのコードだけです。このコードの利用頻度はすさまじく高いです。
このコードで「やっていること」を解説すると、「一番下の行から「Ctrl+上」を押下して、最下行の行番号にジャンプする。そして、その行番号を取得する」といったことをしています。
大体リストにはキーがあり、そのキーとなる列番号を指定すればほぼ間違いなく、最下行の行番号を取得することができます。
一番右の列の列番号を取得する方法
勘の良いひとは分かるかもしれませんが、ほぼ同じロジックで最右列の列番号を取得することができます。
Sub 最右列取得() Dim ws As Worksheet Dim endColumn As Long Set ws = ThisWorkbook.Worksheets("ワークシート名") endColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column End Sub
こちらも同じく、ワークシート名を記載した後、「ws.Cells(1, Columns.Count)」の「1」の部分をヘッダーの入力されている行番号を入力します。以下の図のG1の列番号を取得するイメージですね。
このコードも最終行の時と同じで、Excelの操作でいうと、「Excelの一番右の列から「Ctrl+左」を押下して、ヘッダーに文字が入っている中での一番右の列にジャンプする。そして、その列番号を取得する」というものです。
さいごに
とりあえず手っ取り早く最終行・最右列の番号を取得したいときには、本記事のコードを使うと非常にプログラミングが速くなりますよー。
私はいつも同じコードを使うようにしていますので、この記事に記載のコードを毎回使っています。
楽ちんです。では、また。