サンプルコード
特定列(lCol)の最終行を取得します。
Function GetMaxRow(lCol) As Variant Dim c As Range Set cl = Cells(Rows.Count, lCol) If cl.Value <> "" Then GetMaxRow = Rows.Count Else GetMaxRow = cl.End(xlUp).Row End IfEnd Function
ポイント解説 GetMaxRow= cl.End(xlUp).Rowだけではダメな理由
サンプルコードでは最終行を取得する処理(画像の③)だけでなく、条件(①)をつけています。
エクセルの使用中の最終行を取得する場合、③の処理のみでは失敗するケースがあります。それは、エクセルの最大行に値が入っている場合です。(↓の画像参照)
そのため、条件(①)を付けています。
上の画像のケースで、③の「GetMaxRow= cl.End(xlUp).Row」を実行するとGetMaxRow(最終行)=1行目となります。
しかし、正しくは②GetMaxRow=最大行(1048576行目)となるべき。ですから、条件①で、最大行のみ場合分けするようにしました。
最終行の取得は最大行をチェックしないと失敗する まとめ
最終行を取得する方法はいろいろありますが、Endを使って取得するときは最大行の値に注意する必要があります。
しかし、シートの最大行までは使わない!そんなにデータがない!ということであれば、③の「GetMaxRow= cl.End(xlUp).Row」のみで問題ありません。