雑記帳

VBAは、今日もよく分からない

お付き合いのある会社さんから、Excelシート作成の相談を受けた。

内容は、企業間取引用サイトから出力される管理データ、つまりCSVを読み込み、現場で必要な項目だけを抽出・整形し、単位変換を行ったうえで、印刷用のシートとして出力するというものだった。

正直に言えば、VBAはよく分からない。
VB.NETに似ているようで、なんだか違う。

とはいえ、まったく触れないわけでもない。調べながら書けば、何とかなるだろう。
そう思って引き受け、あれこれ調べながら、それなりに頑張ってみた。

CSVデータのパース処理は、思ったよりスムーズに進んだ。
必要な項目を取り出し、並べ替え、単位を変換する。ここまでは、まだ見通しが立てやすかった。
問題は、印刷用シートの整形だった。

今回の仕様では、品数に応じてデータ行の高さを自動調整する必要があった。さらに、改ページごとに列見出しを追加し、各ページを1枚にきれいに収める必要もある。

この「行の高さの自動調整」と「改ページ処理」の相性が、なかなか厄介だった。
行の高さが変わると、当然ながらページ内に収まる行数も変わる。すると、見出しをどこに挿入するか、どこで改ページさせるかもずれていく。

結局、あまり気持ちのよいコードとは言えない形で、どうにか解決させた。
もう少しきれいに書ける方法はあるのだろうが、今回は実用上問題なく動くことを優先した。
それにしても、この部分には思いのほか時間を費やしてしまった。

ほかにも、日付の扱いで少し勉強になった。
空白が入る可能性のある日付項目は、単純にDate型で受けるのではなく、Variant型で扱ったほうが都合がよい場面がある。

VB.NETの感覚で書こうとすると、ところどころで引っかかる。
似ているようで、やはり別物だ。

そんなこんなで、気づけばあっという間に1日が過ぎていたが、やはりVBAは、よく分からない。
けれど、よく分からないなりに、何とか形にはなった。

Today’s Listening
Composer: Gershwin
Title: Rhapsody in Blue

ブログトップへ戻る