Excelシートにはデータが残る。シートにデータを貼り付ける場合、該当シートが表示される前にはシートをクリアしておきたい。

この際、併せて書式やら項目のタイトルなども設定するようにし、初期化プロシージャとすればなおよいだろう。


初期化プロシージャは例えば「InitSheet」などの名称とし、各シートモジュールのパブリックプロシージャとする。このプロシージャをクリア用メソッドとしてシート数だけ繰り返す処理を準備すればよい。


Excelシート上にボタンを配置する際、コントロールとオートシェイプのどちらかが選択できる。


用途にもよるが、オートシェイプは避けた方がいい。コントロールの方がオートシェイプよりメンテナンス性が高いからだ。


コントロールはシートのPrivateイベントでよいが、オートシェイプが呼び出せるモジュールはPublicモジュールのみである。名前の付け方などを工夫しないと混乱を来すだろう。

コントロールのモジュールはボタンオブジェクトの名称にイベント名が付加された名称であり、モジュールとコントロールとの関連性が分かりやすいが、オートシェイプはマクロの登録をする必要があり、その情報はVBAコード上には展開されない。あくまでオートシェイプのプロパティ値であるため、可読性が悪い。


オートシェイプのメリットを挙げるとすれば、描画性能がいいみたい、なのだ。コントロールの方が機能も多いので、その分重いようなのだ。従って、ボタンをたくさんシート上に貼る場合はオートシェイプを選択した方が良さそうだ。

他にはボタンの形状を工夫したりすできる、という点だろうか。


基本的にはコントロール、やむを得ない場合はオートシェイプ、と使い分けると良いだろう。ただ、混在は避けた方がいいと思う。



Office 2000/XP には Developer Edition がある。これにはExcel VBAのソースコードを管理できる Visual Souce Safe (以下、VSS)が付属している。









Visual Studio なんかのソースコードはテキストであろう。が、Excel VBAはソースコード自体がExcelオブジェクトの内部に含まれているのでそのままVSSに突っ込むわけにはいかず、アドインを利用してソースコードの授受を行う。









ところが、Office 2003以降はDeveloper Editionの提供がなくなり、Visual Studio Tools for Office(以下、VSTO)になった。確かにそのメリットはあるし、マイクロソフト自体も「補完的な関係」と謳っていた覚えがある。






調べた限り、VSTOにはVBAのソースコードをVSSで管理するアドインはないようである。マイクロソフトに問い合わせたものの返答は得られなかった・・。






もしそうだとすると、VBAソースコード管理がVSSではできなくなったことになる。VSSを使うことにより共通モジュールのブラッシュアップなどもできていたのだが、少なくともチーム開発では使えなくなる。









仕方がないので、アドインを作ってみようかなとも考えている。別にターゲットはVSSでなくても、CVSや、外部DBへの連携でもよいかな、と思う。ニーズは・・ほとんどないだろうなぁ。教育用には使えるのかもしれない。