ActiveXコントロールとは、ユーザーフォームで扱うコントロールの事です
ここでは、そのコントロールをフォーム上ではなくワークシート上に作成する方法の解説を行います
ワークシートにコントロールを埋め込む
ワークシートにコントロールを作成する利点は、ワークシート自体を有効利用できる点にあります
例えば、フォームをブックを開くと同時に表示するような処理であった場合、シートに作成しておけばそもそもそんな処理を作成する必要はありません
さらに、特定のシートのみで動作させたいフォーム処理であっても、シートの判定がまったく必要なくなります
さらに、リストコントロールを使用しなくてもそこにワークシートがあるのでデータの展開も楽になります
あと地味に大きいのがマウスホイールで画面を移動できる点です
ユーザーフォームを必要としないように作成を行うことも可能になります
コントロールの作成方法
まずは、開発タブにある挿入ボタンを選択します
ここからコントロールを選択して追加していきます
赤枠内に表示されたアイコン一覧が挿入できるコントロールになります
ユーザーフォームでの作業同様に、一覧にないコントロールは追加可能ですがPC環境に左右されるので、基本のコントロールのみで作成していきます
フォームコントロールについては後述します
今回はコマンドボタンを作成してみます
作成するコントロールを選んだら、ワークシートに挿入します
この時の操作は図形作成要領と同じなので、難しくは無いはずです
大きさや位置は後で調整できるので適当にクリックするだけでもいいです
コントロールの追加モードになると、自動的にデザインモードという編集モードに切り替わります
この状態では、コマンドボタンをクリックしても選択されるだけです
挿入ボタンの隣にあるデザインモードボタンをクリックすることで編集モードを切り替えることが出来ます
デザインモードを解除すれば、コントロールを操作可能な状態になります
コマンドボタンをクリックすると、動作するようになっているはずです
ただ、このままでは何も起きませんので処理を作成します
コントロールを編集する場合は、デザインモードをクリックして有効にします
その状態で、コントロールの右クリックメニューを開きます
その中にある赤枠内のコードの表示を選択してください
すると、VBEの画面に切り替わりコントロールの既定イベントが作成されます
また、その際にプロパティウィンドウに表示されているのが、作成したコントロールのプロパティです
ここを変更すれば、作成したコントロールの細かい設定変更が可能です
プロパティ設定はユーザーフォームのものとほぼ同じなので、そちらを参考にしてください
また、このイベントプロシージャはユーザーフォームではユーザーフォームモジュール内に作成していました
これはシートのコントロールのイベントになりますので、シートモジュール内に作成されることになります
それ以外はユーザーフォームでの作成方法と同じです
オブジェクトボックスから選んで、プロシージャボックスからイベントを選択する流れになります
ワークシート上にコントロールを作成した時点で、オブジェクトボックスで選択可能になりますので、上記のような右クリックメニューから実行しなくてもVBEの画面から作成することも可能です
フォームコントロールとActiveXコントロールについて
ちなみに、ActiveXコントロールの上に「フォームコントロール」というコントロールがあり挿入できる種類も同じものがあります
こちらは、簡易版と思ってもらっていいです
簡易版なので、作成してセルとの連携を簡単に設定できます
スクロールバーの数値設定なども書式設定から行えるので手軽に作成できます
ただ、簡易版ですので設定が簡単な分出来ることは少なくなっています
色の変更なども行えませんし、なによりイベントの利用が出来ません
コントロールの最大利点のイベントが利用できず、マクロ登録による単一マクロしか対応できませんのであえて使う理由がほぼありません
比較的すぐに限界を感じると思います
それに、ActiveXコントロールはユーザーフォームと同じように作成できるので、慣れやすいのも優位性があると思います