ExcelVBA商品マスター存在チェック 初心者あるある 速度向上にも影響する書き方

ExcelVBA初心者あるある
商品マスター存在チェック


言語不問!プログラミンに欠かせない「検索」高速化のコツ。対象範囲を何度もSet格納したら遅いだけ!

みなさん、こんにちは。セルネッツ竹本です。


商品コードを検索キーとして、台帳である商品マスタから「商品名」や「売価」を取得する処理は、データ存在チェックの定番です。

図のような件数ならば、短時間で処理は完了します。

が、もしも大量なレコード数だったら・・・。

◆検索の対象データ範囲に着目すると良い


掲載の図は、検索データ範囲をSet命令でバッファ格納し、商品コードの有無をチェックしています。

問題は、記載のSet命令です。

この検索Moduleをよく見ると、調べるレコードの件数分は毎回Set命令を行うことになります。

20件なら20回。1000件なら1000回。これを繰り返すModuleであることがわかります。

◆Dim変数をPublic型に変えて、一度だけSetで解決

レコード数にかかわらず、検索データ範囲は不変なので、この場合は、一回だけSet命令を使えば、何回でもこの領域を探せるのです。

他の開発言語では、開発チームにより、複数人プロジェクトがからむケースが多いため、「Public変数」は、リスクが高いものと認識されることが多いようです。

が、Excelマクロ開発においては、大規模システムになり得ない、という背景からも、Public変数の恩恵を十分に得られる記述が望ましいと考えます。

◆便利なPublic変数を上手に活用できると、ソース記述が激減

リスク回避には、Call分の名前や、「変数の名前」などから、一発で識別できる命名ルールを採用することです。

これにより、Public活用リスクは減り、可読性、メンテナンス性が向上します。

標準化ガイドラインでは、誰もが同じ書き方で、誰もがソースを解析できるように工夫すると、何よりも「属人化」が防止できます。

退職したAさんじゃないと、危険で改修などできない・・・これは避けたいものです。


全国対応!お気軽にお問い合わせください