Road of Excel Macro

昨日に続いてExcelの話。

ちょっとした定型作業の為にツールを作ったりスクリプトを書いたりすることが多い。 これが自宅なら言語の選択肢は多いのだが、仕事だと、他の人が使うことも考慮しなきゃいけない場合はExcelのVBAの一択だったりする。

で、このExcelのVBAだが、俺は結構クラスモジュールを使う。 いやもう 「結構」 がむしろ控えめな表現になるぐらいの勢いで使う。

などと割と致命的な問題を抱えてはいるが、それでもやっぱりクラスにした方が便利な場合が多いからだ。

例えば一覧形式で入力された値をチェックする場合、俺がやるのはこんな感じ。

  1. チェックのインターフェースを定義するクラスを作る。

  2. このインターフェースを実装するチェッククラスを作る。

    正規表現、値の範囲、日付、等々、各列の内容に応じたチェック処理を、同じ呼び出しで適用できるようにする。

  3. 各列用のチェッククラスのインスタンスを、列の並びと同じ順に詰めたリストを作るためのファクトリークラスを作る。

    各列で実際に適用する正規表現などは設定シートに持たせ、その情報でインスタンスを作るようにする。

  4. ファクトリークラスにチェックリストを作らせ、各行に適用するコントローラーを作る。

「作る」 と書いたが、実際には過去に作ったものを、設定シートを差し替えて使い回しているだけだったりする。 何かと使い回しが効いて、自己満足度は高い。

が、これを渡した人たちからの評判は、あまり宜しく無い。

「クラスがたくさん使われてて、難しいです」

「クラス、使わない?」

「使ったことないです」

「そうかぁ… 便利なんだけどなぁ…」

「ステップ実行してみたんですけど、あっちこっちの小さい処理に飛んで、何やってるのか解りません」

「いや、小さい処理なんだから、何やってるかは解るでしょ」

「一つ一つは解るんですけど、その処理の位置付けというか、なんか全体が見えないというか」

「あー、それはそうかも」

「あと、コメントが全然無いです」

「それはすまん」

だいたいいつもこんな感じ。

コメントを書かないのは俺が悪いが、クラスモジュールに罪はない。 使った方が便利になることが多いし、躊躇わずに使って欲しいものだが、使わないと便利さも実感できなくて、だから使われないままなんだよな。 うーん…。

まあ、俺が心配することじゃないか。