Vba 最終 行
- carlos546ahmed53
- Sep 20, 2022
- 4 min read
Office TANAKA これは基本的なテクニックだと思って今まで解説しませんでしたが、セミナーなどで質問が多かったので、簡単に書いておきます。 たとえば、下図のようなリストがあったとします。 この、現在入力されている最終セル あるいは最終行 を取得するには、どうしたらいいでしょう。 最終セルを取得する Excelに詳しくない、VBAのプログラミング的なことしか知らないような方でしたら、次のように考えるかもしれませんね。 「A列を上から順番に見ていって、空欄セルが見つかったら、その直前が最終セル」だと。 その方法でやってみましょうか。 Select End Sub 思いっきり下品なコードにしてみました 笑。 まぁ、ここまではヒドくないと思いますけど。 さて、Excelには Endモードという機能があります。 Endモードに切り替えるには、Endキーを押します。 実行すると、ステータスバーに「End」または「Endモード」と表示されます。 【Excel 2003まではステータスバーの右下】 【Excel 2007以降はステータスバーの左下】 Endモードの状態で矢印キーを押すと、アクティブセルが、データが入力されている終端にジャンプします。 vba 最終 行 この「データの外から、データが入力されている方向にジャンプする」操作をマクロ記録してみましょう。 Sub Macro1 Range "C14". Select Selection. Vba 最終 行 xlUp. Select End Sub 2行目のSelectionは「選択されたセル」ですから、その前で選択しているセルC14 Range "C14" です。 ですからこれは、次のように1行で表せます。 Sub Macro1 Range "C14". End xlUp. Select End Sub このように、データが入力されていないであろう十分下のセルから、上方向に向かってEndモードでジャンプすれば、データが入力されている最終セルを簡単に取得することができます。 Excelの機能を熟知している人なら、このように1行で実現できるんです。 Excelの機能に詳しくない、VBAのプログラミング的なことしか知らない人からVBAを習ってはいけない、という良い例ですね。 では、どこから上に向かってジャンプすればいいのでしょう。 一般的には、ワークシートの最終行からジャンプすることが多いです。...
【ExcelVBA】指定のセル範囲(Range)の最終行を取得する
基本コードと解説 あるセル範囲の最終行を求める、最も基本的なコードがこちらです。 Rows. Row - 1 まずは セル範囲. Rows. Vba 最終 行 C3:E8なら「6」がここで求まります。 あとは セル範囲より上にある行数 1~2行目の2 を足せばよく、 これは「セル範囲の第1行 - 1」で求まりますので、 セル範囲. Row - 1 両者を足せば目的の式になりますね。 Rangeオブジェクトのプロパティとして、• Rows. Count• Row は重要なプロパティですので、必ず覚えておきましょう。 セル範囲の最終行を求める関数 今回の「あるセル範囲の最終行」のように、 Rangeオブジェクトの情報を調べるコードは非常に汎用性が高いため、 関数にしておくとかなり便利に使いまわすことができます。 Rows. Row - 1 End Function たった1行で、しかも中身は基本コードそのまんまです。 AutoFilter. ListObject 1. Range このようにいろいろなセル範囲の最終行が、 すべて1行のコードで取得できるようになります。 この世のすべてのRangeオブジェクトに. LastRというプロパティをつけることができたようなもので、鬼の用に便利なので是非とも関数にしておきましょう。 関数を作ったことが無かったり、苦手意識がある方もいるかもしれませんが、 実は関数ってこんな簡単です。 難しい処理をこなすとか、コードの共通部分を抜き出すとかではなく、 ちょっとしたコードを瞬殺できるようにする、いわゆる汎用関数は、 作るのも楽で、しかも便利です。 vba 最終 行 よろしければこちらの記事をどうぞ。 おまけ:別解 豆知識的に基本コード以外の別解も置いておきます。 引き出し増やしにでもどうぞ。 Rows セル範囲. Rows. Count. Row セル範囲. Rows 1 でセル範囲の第1行を取得できます。 セル範囲. Rows n でセル範囲の第n行を取得できます。 ということで、 セル範囲の最終行はセル範囲. Rows セル範囲の全行数 ですね。 Rows n
Comments