クラスモジュールを、勉強するにあたり、サンプルがすくないですよね。
サンプルがあったとしても、とても長いコードですね。
なので、実務で利用できるサンプルを用意しました。
YouTubeでも解説していますので、ぜひ、ご覧ください。
クラスモジュールで、最終列、最終行を取得
こんにちは。伊川です。
すっかり、クラスモジュールにハマっています。
最近、思うのですが、クラスモジュールは、設計図と言います。
しかし、以前に紹介した、辞書機能のように利用すると、とても便利です。
設計図とは、多分、システムの設計も、必要なのでしょう。
しかし、コードを書く人が、いかに楽ができるかというのも、込みで、設計図のような気がします。
Excelで、VBAを利用するからには、最終列、最終行の取得が必須スキルとなります。
初心者の頃は、本当の理解できませんでした。
当然、ループも理解できませんでした。
しかし、いつしか、コードを眺めていると、理解出るものです。
以前は、Functionで、最終行を取得するコードを紹介しました。
記事差込
今回は、クラスモジュールで、最終行、最終列を取得します。
このブログはこんな人にお勧め
Excelで、クラスモジュールを勉強している人
Excelで、最終行、最終列を取得したい人
クラスモジュールって何?って思っている人
このブログを、読み終わるころには・・・・
今回は、1番実務で利用するであろう、最終列、最終列を取得します。
クラスモジュールにそっと、忍ばせてください。
きっと便利に、効率的にコードを記載できます。
最終行、最終列の取得
VBAを勉強して、最初の壁は、多分ココです。
ループの要素が絡み、1番下と、VBAで記載しなければなりません。
1番下って書けるのか?
最初は、そう思うはずです。
本当に、初心者の人は、ループを最初の覚えたほうが良いです。
しかし、クラスモジュールが、気になっている人は、今回の記事を、是非読んでください。
また、動画の方が、手品的要素もありますので、お時間があれば、動画も、ご視聴ください。
最終行、最終列の取得 作業手順 その1 通常のコード
上の図では、最終列⇒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
このコードは、汎用性があります。
この赤丸の部分に、工夫を加えると、もっと汎用性がアップします。
最終行、最終列を取得 作業手順 その2 クラスモジュールに記載
Aとか、1とかが、なくなりました。
maxR,maxC という関数を作成します。
このmaxR,maxCが、作り出すインスタンスは何か?
最終行を取得、最終列を取得、が、インスタンスになります。
そして、maxR,maxCが、活躍する場所は、ActiveSheetということになります。
最終行、最終列を取得 作業手順 その3 標準モジュールから、呼び出す
このコード実行すると、Msgboxに、最終列、最終行が表示されます。
maxR(1)⇒1列目
maxC(1)⇒1行目
コード自体は難しくないと思います。
最終行、最終列を取得 作業手順 その4 ループで遊んでみる
maxR(1)⇒1列目
maxC(1)⇒1行目
この(1)の数字の部分を、For~Nextのループさせたらどうなるか?
すべての画像は貼りませんが、最終的には、13番目を指定して、終了となります。
最終行、最終列を取得 作業手順 その5 手品的なことをやってみる
このように、最終行に、伊川直助を入れてみたいとします。
このコードを実行します。
こんなこともできます。
このコードを実行すると、元に戻ります。
ここがポイント
クラスモジュールの説明が、難しく記載されているので、やる気がなくなると思います。
今回のコードも、クラスモジュールを含めて、15行くらいです。
いきなり、難しいものから勉強のするのではなく、カンタンなものから勉強しましょう。
今回のコードは、本当に、クラスモジュールに、仕込んでください。
最終行、最終列の取得がカンタンになります。
まとめ
クラスモジュールのカンタンなコードの紹介でした。
もちろん、Functionでもできます。
どんな時に、どんなコードを利用するのか?
そのスキルも含めて、VBAのスキルです。
今回も最後まで読んでいただきありがとうございました。