さて、シート上にボタンを配置するだけではなく、チェックボックスやらラベルやらを配置するようなこともある。私の経験したところでは、検索条件や件数をシート上のラベルに出すようなことがあった。


その場合、「ラベルやボタンをマウスカーソルでクリックするとフォントサイズが変わる」という事象が発生した。

推測だが、やはりコントロールの描画能力が不十分だからではないだろうか?これを防ぐ方策は今のところ見つけていない。ラベルなら回避できるかもしれないが、ボタンやチェックボックスなどは難しそうだ。




※Microsoft Office 2000/Visual Basic プログラマーズガイド(Microsoft Office 2000 Developer Edition に同梱されている資料)によると、ボタンやらチェックボックスやらは「コントロール」と呼ぶそうだ。昔、こういうのを「コンポーネント」と呼んでいたような記憶があるのだが、記憶違いかも・・。コントロールというと別のイメージがあるので、すぐ「コンポーネント」などと誤表記する場合があるので、その際はあたたかく見守るか、ご指摘いただければと存じます。



会社に入って年の浅い頃、コンピュータの処理速度が遅かった頃の話を飲んだ席で取締役から聞かされたことがある。

「どれだけ負荷の重い処理を軽くするかは重要だった。2ファイルのマッチング処理をするにせよ、たとえばソート処理は資源を食うから先にマッチングをして、それで合わなかったデータだけをソートし再度マッチング処理をした」など。


今だと資源を意識して設計することも少ないかもしれない。それよりも保守性の高さを求められる事の方が多いかもしれない。


しかし、例えばメモリがかなり制限される組み込みなら保守性よりもプログラムサイズがコンパクトであることを求められることもある。その際は「どう組んだら資源を節約できるか」が重要になる。つまり、与えられた環境下、条件下により優先事項は変わってくるのだ。


Excel VBA では関係のないことだろうか?今どきのPCならメモリもたくさん搭載しているから大丈夫だ、と考える人もいるが、早計である。

職場によっては型遅れのPCを使っている職場で、OS稼働に必要とされる最低メモリしか積んでいなかったり、たとえスペックがよくても常駐プログラムをたくさん起動してメモリをバカ食いしていたり、ハードディスクにわんさかデータを突っ込んでリソースが足りなくなっていたり、ということはある。

リソース不足だと、Excel VBAで作成したプログラムは誤動作を起こしやすい。実際に特定のマシンでのみエラーが頻発することもあったが、PCを入れ替えれば問題が解決した、ということもある。可能なら最低なマシンを確認し、それでも確実に動作するように構築できるのが理想かもしれない。が、現実問題は「ごく一部で動かないならPC交換orリソース追加」で対応した。顧客のPCを全部チェックしてられなかったと言うよりは、誤動作を起こすことがある、という認識がなかったからである。


Excel VBA でのリソース節約はどのようにすればよいか?いくつか手はあるが、まず代表的な所では「変数をきちんと定義する」ことだろう。定義しないと バリアント型になる。バリアント型は他の型よりもメモリをたくさん消費するのだ。リソース節約については提供できるくらいの情報量になってきたら出したいと思う。これともう一つが「処理方法による速度の違い」との関連も併せて書ければ、と思っている。


なお、リソース不足のPCはマシンスペックで決まるのではなく、個々の使用状況によって変わってくる。Excelで作成したシステムを稼働させるためのスペックを顧客から求められても、状況によって変わる、という説明は必要であろう。


シート上にボタンを配置したとして、「タブキーで移動させたい」という要望はある。この要望に対し「できます」と安請け合いしないことだ。基本的には「利用できない」と断る方がいいだろう。


ボタンを配置しても、標準ではできない、ということは知っておこう。やれなくはなさそうだ。が、相当面倒くさそうである。


また、セルへの遷移との兼ね合いもあり、どう作り込むかは状況に応じて変わってくる。もし実装を検討せざるを得なくなったら、状況を絞り込む必要があるだろう。