実は、クラスモジュールは、今まで使ったことがありませんでした。
「使わなくてもできないことは何もない」からです。
ところが、先日、ある方が使っているのを見て、「なんかカッコいいな~」と思ってしまったのです。そもそも「クラスモジュールとは何なのか」がいまだに分かっていないのですが、とりあえず使ってみることにしました。
クラスモジュールの使い方の説明の中で、私にとって一番わかりやすかったのは、こちらです。
この記事に書かれていることだけをたよりに、現在、逐次バージョンアップを進めている「公用文テンプレート」でクラスモジュールを使ってみました。
最初に作ったのは、右余白を計算するクラスです。
このマクロでは、ページの設定を行う際に、各行の字送りの乱れをなくすため、字送りの値に応じた右余白を計算して設定するようになっています。
この計算式には、たくさんの変数を必要としているため、切り離して標準モジュールをスッキリさせました。
次に作ったのは、文字列を配列変数に変換するクラスです。
VBAでは、配列を定数として設定することができないため、文字列で設定しています。これを利用する際には、その都度、配列変数に変換する必要があります。複数のモジュール内の複数のプロシージャで同じ処理が行われていましたので、これをクラスにまとめで標準モジュールから独立させました。
さらに、リストを設定するクラスも作ってみました。
ワードの箇条書きや段落番号(リスト)は、できれば予めアクティブドキュメントに設定を行って、スタイルで指定するようにしたいのですが、ここでは書ききれない複雑な事情があって、どうしても必要の都度段落に設定(適用)するほかありません。この処理も複数のモジュール内の複数のプロシージャで行われていましたので、これもクラスにまとめて標準モジュールから独立させました。
クラスを使っておけば、他のブックで使いたい時、モジュールをドラッグ&ドロップするだけで流用できます。その時、宣言する変数名を変えてやれば、別の名前で呼び出すこともできます。
現状では、クラスを使わなかった場合に比べて「格段に読みやすくなった」あるいは「使いやすくなった」とまでは思えないのですが、今後、もっと、クラスモジュールをしっかりと理解できるようになったら、より効果的な使い方ができるようになるかも知れません。
とりあえず、現時点においては、「変数や処理をまとめたくなったらクラスを使う」を私のスタイルに加えておこうと思います。
コメント