最近、久しぶりにVBAでツールを作成しました。
今回は資料(今月分)に書かれている処理名が資料(前月分)にあるか判定するようなPGです。
基本的には同じ処理なので処理名も同じになるのですが、「○月処理分」みたいに月によって違う部分があるので単純に今月の処理名で検索してもヒットしません。
その為、まず「○月処理分」のところを「*月処理分」に置換した後にFindメソッドで検索するようにしたのですが・・・。
自分の書き方が悪かったのか類似する処理名も拾ってきてしまう。
やっぱり安易に*(任意の数の文字)を使うのは危険のようです。
更にFindメソッドでは正規表現の[0-9]みたいな書き方は出来ないらしく詳細な検索には不向きなようです。
なのでFindメソッドは諦めてLike演算子で比較するようにソースを書き換え。
該当部分は上手くいくようになったのですが、今度はFindメソッドでは引数に指定できた半角全角の判定がLikeでは判断してくれないのでそっちが検索出来なくなってしまいました(汗)
仕方ないので比較するふたつの処理名にStrConv関数をかませて、全部全角にしてから判定する処理を追加して完成となりました。
ただFindからLikeに書き換えたせいでソースが非常に汚くなってしまいました。
本当ならLikeだけで完了するはずが、FindNextやAddressなどの箇所があるせいでLikeの検索でヒットした名前を使ってFindで再検索するとか訳の分からない内容に。
他に誰もメンテはしないでしょうがもしもの為に今度出勤した再にもう一度ソース見直したいと思います。
動くのは大前提ですが処理時間はより短く、ソースは綺麗にが理想ですからね(・∀・)