Digital_Neko

フリーランスプログラマー

ExcelVBA 最終行、最終列 クラスモジュールを利用しよう

ExcelVBAをある程度使っていると、クラスモジュールというのが気になってくると思います。

今回の記事は、初めてクラスモジュールを使う方が、クラスモジュールを使う体験ができる内容になっています。参考になれば嬉しく思います。

早速、「挿入」より「クラスモジュール」を選択し、クラスモジュールをプロジェクトに挿入します(標準モジュールを挿入する場所にあります)。

今回は、オブジェクト名を図1のように「Class」に変更します(自分で好きなオブジェクト名をつける事ができます)。

図1.オブジェクト名を設定

そして、今回は図2のクラスモジュールに「myLastRow」という任意の列の最終行を求める関数と、「myLastCol」という任意の行の最終列を求める関数を記述しました。

図2.クラスモジュールに記述

上記関数を実際に利用するには、図3のように標準モジュールで、「Class」のインスタンスである「myClass」を生成します。こうする事で、クラスモジュールの関数を使用できるようになります。クラスモジュールの関数を利用するには、「myClass」に「.」をつけてクラスモジュールにある関数名を入力します。

図3.標準モジュールに記述

図3の標準モジュールでは、データが入力されたセルの最終行と最終列を求めてメッセージボックス関数で表示しています。行と列を求めるエクセルシートのデータは、図4のようになっています。

図4.Excelシート

標準モジュールでTestのマクロを実行すると、メッセージで1列目の行数である「2」、1行目の列数である「3」が表示されます。

今回のようにクラスモジュールを利用すると、行いたい処理をまとめておく事ができるので、VBAでプログラムを書いていくのがとても楽になります。クラスを複数作成して、「ファイル読み込みクラス」や、「印刷を行うクラス」などに分けるとプログラムのメンテナンス性も上がります。

何よりも、「ファイルを読み込む人」、「印刷をする人」のように処理毎に係を分ける事ができるので、プログラムがとてもわかりやすくなります。

クラスモジュールを使うようになると、VBAが格段に面白くなるのでぜひ取りれてみてください。