文弱日記

文学とサブカルとお役所生活

VBAは難しい

入庁して以来、VBAから始まったプログラミング言語の勉強もJavaを経てPythonまで来ました(COBOLは挫折しました。)。

すべての言語オライリーで言えばまだまだ初級レベルにすら到達してないけど、SEが書いたコードを雰囲気で読めるようになったこと、他人が読めるシンプルなコードを書けるようになってきたこと、で自信をつけてきたところ!

 

だったんだけど、他部署から振られた業務用のExcelマクロブックの作成が難航しており、自信さん飛んでっちゃった。。。

 

10万以上のレコードのそれぞれに関数で作ったフィールドを追加するため、先頭のレコードに関数を、以下のレコードにはAutoFilter?で関数付与を、、、という小学生みたいなコード書いたら、まずメモリ不足で計算途中停止によりダメ。

 

『セル内で計算をさせるのではなく、メモリで計算した結果の値をセルに入れるようにしなきゃ』

 

というSEさんからのアドバイスを元に、今度は計算をすべてメモリ内で完結するコードを書いたところ、「そんな保守しにくいコード書かれても困るよ」と依頼部署から言われてダメ。

 

VBAは他のプログラミング言語とは異なり、

・メモリ内オブジェクトとセル値の2つの広がりをもつこと。

・プログラミングの素養がない多くの職員が触れるものであるため、単純で、動きがわかる(セル値やメモリ内オブジェクトを積極的に使った)記述にすること。

この2つがどうやら大切らしい。処理時間等の効率やコードの美しさよりも、『どう動くか』というビジュアルを第一に考え、メモリ内オブジェクトとセル値への割り振りを考える…と。

VBA舐めてたけど奥が深いです。