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


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


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

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


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

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


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