![見出し画像](https://assets.st-note.com/production/uploads/images/66253954/rectangle_large_type_2_0252d65fcbe43c234334c77b64f1fbe7.jpg?width=1200)
【Excel VBA】クラスモジュールで、最終列、最終行を取得
クラスモジュールを、勉強するにあたり、サンプルがすくないですよね。
サンプルがあったとしても、とても長いコードですね。
なので、実務で利用できるサンプルを用意しました。
YouTubeでも解説しています。是非、ご覧ください。
紹介する内容は、こんな事です 30秒で確認できます。
クラスモジュールで、最終列、最終行を取得
こんにちは。伊川(@naonaoke)です。
すっかり、クラスモジュールにハマっています。
最近、思うのですが、クラスモジュールは、設計図と言います。
しかし、以前に紹介した、辞書機能のように利用すると、とても便利です。
設計図とは、多分、システムの設計も、必要なのでしょう。
しかし、コードを書く人が、いかに楽ができるかというのも、込みで、設計図のような気がします。
Excelで、VBAを利用するからには、最終列、最終行の取得が必須スキルとなります。
初心者の頃は、本当の理解できませんでした。
当然、ループも理解できませんでした。
しかし、いつしか、コードを眺めていると、理解出るものです。
以前は、Functionで、最終行を取得するコードを紹介しました。
記事差込
今回は、クラスモジュールで、最終行、最終列を取得します。
このブログはこんな人にお勧め
Excelで、クラスモジュールを勉強している人
Excelで、最終行、最終列を取得したい人
クラスモジュールって何?って思っている人
このブログを、読み終わるころには・・・・
今回は、1番実務で利用するであろう、最終列、最終列を取得します。
クラスモジュールにそっと、忍ばせてください。
きっと便利に、効率的にコードを記載できます。
最終行、最終列の取得
VBAを勉強して、最初の壁は、多分ココです。
ループの要素が絡み、1番下と、VBAで記載しなければなりません。
1番下って書けるのか?
最初は、そう思うはずです。
本当に、初心者の人は、ループを最初の覚えたほうが良いです。
しかし、クラスモジュールが、気になっている人は、今回の記事を、是非読んでください。
また、動画の方が、手品的要素もありますので、お時間があれば、動画も、ご視聴ください。
最終行、最終列の取得 作業手順 その1 通常のコード
![画像1](https://assets.st-note.com/production/uploads/images/66254264/picture_pc_b49283be250eff5bbaeb0c0cbbf372be.jpg?width=1200)
上の図では、最終列⇒12 最終行⇒10
この値を取得します。
maxrow = Cells(Rows.Count, "A").End(xlUp).Row
この書き方は、A列の1番最後⇒セルA12です。
maxColumns = Cells(1, Columns.Count).End(xlToLeft).Column
この書き方は、1行目の1番最後⇒セルJ1です。
Cells(Rows.Count, "A").End(xlUp).Row
Cells(1, Columns.Count).End(xlToLeft).Column
このコードは、汎用性があります。
![無題](https://assets.st-note.com/production/uploads/images/66254364/picture_pc_d6dcf6a3c66ff832cf93eebb82dfa527.jpg)
この赤丸の部分に、工夫を加えると、もっと汎用性がアップします
最終行、最終列を取得 作業手順 その2 クラスモジュールに記載
![画像2](https://assets.st-note.com/production/uploads/images/66254290/picture_pc_e773f1ee0f9bc06d5db766eb8e079415.jpg?width=1200)
Aとか、1とかが、なくなりました。
maxR,maxC という関数を作成します。
このmaxR,maxCが、作り出すインスタンスは何か?
最終行を取得、最終列を取得、が、インスタンスになります。
そして、maxR,maxCが、活躍する場所は、ActiveSheetということになります。
最終行、最終列を取得 作業手順 その3 標準モジュールから、呼び出す
![画像4](https://assets.st-note.com/production/uploads/images/66254443/picture_pc_570aeeba32dc8200534cc0e967d2be5d.jpg)
このコード実行すると、Msgboxに、最終列、最終行が表示されます。
![画像5](https://assets.st-note.com/production/uploads/images/66254469/picture_pc_6a47979622dc1fabe253550b4385b250.jpg?width=1200)
![画像6](https://assets.st-note.com/production/uploads/images/66254480/picture_pc_f0729346ab920db52368f545726ff223.jpg?width=1200)
maxR(1)⇒1列目
maxC(1)⇒1行目
コード自体は難しくないと思います。
最終行、最終列を取得 作業手順 その4 ループで遊んでみる
maxR(1)⇒1列目
maxC(1)⇒1行目
この(1)の数字の部分を、For~Nextのループさせたらどうなるか?
![画像7](https://assets.st-note.com/production/uploads/images/66254537/picture_pc_24edb2788e33b5c2659a94020f47f826.jpg?width=1200)
すべての画像は貼りませんが、最終的には、13番目を指定して、終了となります。
![画像8](https://assets.st-note.com/production/uploads/images/66254559/picture_pc_7cc747a4c84a58c9dc05e03ce84ec9ac.jpg?width=1200)
最終行、最終列を取得 作業手順 その5 手品的なことをやってみる
![画像9](https://assets.st-note.com/production/uploads/images/66254578/picture_pc_ad6450602365151b98dc169b386cd9d5.jpg?width=1200)
このように、最終行に、伊川直助を入れてみたいとします。
![画像10](https://assets.st-note.com/production/uploads/images/66254595/picture_pc_8d8b08ecb5d3c8f394e2f5e9cfee9da9.jpg)
このコードを実行します。
![画像11](https://assets.st-note.com/production/uploads/images/66254613/picture_pc_6539fda88bf2f5d6b67e2c16ebddeb7d.jpg?width=1200)
![画像12](https://assets.st-note.com/production/uploads/images/66254630/picture_pc_88a8a8fc1ced7220e3b4b543b15e8cd6.jpg?width=1200)
こんなこともできます。
![画像13](https://assets.st-note.com/production/uploads/images/66254654/picture_pc_9f688e6a66ae83352f590f37c11f810e.jpg)
このコードを実行すると、元に戻ります。
ここがポイント
クラスモジュールの説明が、難しく記載されているので、やる気がなくなると思います。
今回のコードも、クラスモジュールを含めて、15行くらいです。
いきなり、難しいものから勉強のするのではなく、カンタンなものから勉強しましょう。
今回のコードは、本当に、クラスモジュールに、仕込んでください。
最終行、最終列の取得がカンタンになります。
まとめ
クラスモジュールのカンタンなコードの紹介でした。
もちろん、Functionでもできます。
どんな時に、どんなコードを利用するのか?
そのスキルも含めて、VBAのスキルです。
今回も最後まで読んでいただきありがとうございました。
よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。