当サイトの記事にはプロモーションが含まれています。

Excelの最大行数はVBAでやっちゃえ!完全攻略ガイド

パソコンパソコン・スマホ教室
スポンサーリンク

「excel 最大行数 VBA」で調べてみても、断片的な情報やサンプルだけで、実際の業務で役立つ知識にはつながらないことが多いですよね。
「なぜ最終行が正しく取れないの?」「どの方法を使うのがベスト?」と悩んでいる方に向けて、この記事ではただのコード解説にとどまらず、実務に即したベストプラクティスと隠れた落とし穴まで徹底的に掘り下げます。
最後まで読めば、あなたのExcel VBAスキルは一段階レベルアップするはずです。

スポンサーリンク

excelの最大行数と最大列数を正しく理解する

Excelのイメージ

Excelのイメージ

まず前提として、Excelのバージョンによって最大行数と最大列数が異なります。これを理解せずにVBAを書くと、思わぬエラーやデータ欠落の原因になります。

ファイル形式 最大行数 最大列数
xls(Excel2003以前) 65,536 256
xlsx / xlsm(Excel2007以降) 1,048,576 16,384

注意点
新規でxlsx形式に保存した後、xls形式に変換すると、見かけ上は新しい形式の上限が残りますが、再度開くと強制的に古い上限に戻り、超過したデータは消えてしまいます。
業務で使うなら、必ずxlsx/xlsm形式を選びましょう。

VBAで最終行・最終列を取得する王道パターン

最終行や最終列の取得は、用途や表の構造によって最適な方法が変わります。代表的な手法を整理してみましょう。

xlUpで最終行を取得する

もっとも一般的な方法が「Cells(Rows.Count, 列番号).End(xlUp).Row」です。
例えばB列の最終行を取る場合は以下のように書きます。

vba
Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row

これは、シートの一番下から上に向かってデータを探す動作をします。ただし最後のセルが空欄の場合、正しい結果が得られないので注意しましょう。

UsedRangeでシート全体の最終行を取得

「シート内で最後に使われているセル」をベースに範囲を返す方法です。

vba
Dim lastRow As Long
lastRow = ActiveSheet.UsedRange.Rows.Count

表の外に余計なデータが残っていると想定外の行を拾ってしまうので、データ整理が必須です。

CurrentRegionで表の塊を丸ごと取得

表の中のセルから始めれば、隣接したブロック全体を範囲として取得できます。

vba
Dim rng As Range
Set rng = Range("B2").CurrentRegion
MsgBox rng.Rows.Count

結合セルやフィルターがあると誤動作する場合があるので、業務では整った表構造とセットで使うのがおすすめです。

避けるべき落とし穴と実務での工夫

「なぜか最終行が合わない…」という悩みは実は多くの人が経験しています。よくある落とし穴を先に知っておくことで、実務のストレスを大幅に減らせます。

ここがポイント!

  • 非表示行・フィルターフィルターやグループ化がかかっていると、実際の最終行を認識できません。
  • ゴミデータ一見空に見えても空白文字が入っているセルが最終行扱いされることがあります。
  • セルの結合結合セルを含む列や行で最終行を探すと、誤った位置を返すことがあります。

これを避けるには、VBAで最終行を取る前に次のような下準備を行うのが効果的です。

  1. 全ての行と列を表示させる
  2. 不要な空白やゴミデータを削除する
  3. セル結合を避けて整った表を作る

excel 最大行数 VBAに関する疑問解決

なぜInteger型ではダメなの?

Excelの最大行数は100万を超えます。Integer型は約3万までしか扱えないため、必ずLong型を使いましょう。

最後の行を取るだけならどれがベスト?

列が安定しているならxlUpが一番シンプルです。表全体を対象にするならCurrentRegion。シート全体ならUsedRange。用途で使い分けが正解です。

空白文字を一括削除する方法は?

以下のようなマクロを実行すれば、見えないブランク文字も削除できます。

vba
Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart

これで最終行取得の精度が一気に上がります。

まとめ

excel 最大行数 VBAを正しく理解することは、単にコードを動かすだけでなく、業務効率を大幅に上げるために不可欠です。

重要なのは「最大行数の制限を知る」「適切な取得方法を選ぶ」「事前にデータを整える」という3点。これさえ守れば、最終行や最終列の取得で悩むことはほとんどなくなります。

今日からぜひ、xlUpやCurrentRegionを状況に応じて使い分け、無駄のないスマートなVBAコーディングを実践してみてください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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