前回記事では、ActiveXコントロールのチェックボックスをご紹介しました。
記事の中で、「チェックボックスをカスタムしたいなら、ActiveXコントロールのチェックボックスがいいかも」とお伝えしました。
そこで今回は、ActiveXコントロールのチェックボックスをVBAで操作する方法をご紹介していきたいと思います。
OLEオブジェクトを取得する
基本的な記述方法
まず最初に、チェックボックスを操作するためのオブジェクト取得からいきましょう。
ActiveXコントロールのチェックボックスは、OLEオブジェクトを取得することで操作することができます。
基本的な記述方法はこちら。
ActiveSheet.OLEObjects("CheckBox123")
という風に記述することになります。
オブジェクト名で記述することもできる
ActiveXコントロールのチェックボックスは、コントロールのオブジェクト名を直接コード内に記述してオブジェクトを取得することもできますよ。
コントロールの名前は、デザインモード状態でコントロールをクリックするとシート左上に現れる名前で把握することができす。
例えば、「ChekBox123」というコントロールのオブジェクトを取得したければ、上でご紹介した基本の記述方法のOLEオブジェクト部分をこのオブジェクト名に置き換えればOKです。
例えばこんな風に。
ActiveSheet.CheckBox123
この方法ならシンプルですし、コードが分かりやすくなりますね。
チェックボックスをVBAで操作する
Valueプロパティでチェックボックスの値を取得する
では、チェックボックスのオブジェクトが取得できたところで、色々な操作をしてみましょう。
まずは基本的なところで、チェックボックスのON/OFFの値を取得してみます。
チェックボックスの値は、ONならばTrue、OFFならばFalseがセットされています。
こちらの「CheckBox123」というチェックボックスの値を、Valueプロパティで取得してみましょう。
コードはこちらです。
Sub Test_CheckBox123() With ActiveSheet MsgBox .CheckBox123.Value End With End Sub
「CheckBox123」というチェックボックスの値を、メッセージで表示させるコードです。
チェックボックスのON/OFFを操作する
お次は、VBAでチェックボックスのON/OFFを操作してみましょう。
ここでもValueプロパティを使います。
Sub Test_CheckBox123() With ActiveSheet .CheckBox123.Value = False End With End Sub
ONになっているチェックボックスを、OFFに切り替えるコードです。
このコードを実行すると…
この通り、チェックボックスがOFFになります。
チェックボックスをONにしたい場合は、上のコードの「False」を「True」に置き換えるだけでOKです。
BackColorプロパティでチェックが付いたら背景色を変える
続いて、チェックボックスがONになったら、チェックボックスの背景色を変えてみましょう。
チェックボックスの背景色は、BackColorプロパティで設定することができます。
例えば、チェックボックスがONの場合に背景色を水色にしたい場合、こんなコードになります。
Sub Change_BackColor() With ActiveSheet.CheckBox123 If .Value = True Then .BackColor = &HFFFF00 End If End With End Sub
イベントプロシージャと組み合わせて背景色を変える
前回の記事で、ActiveXコントロールのチェックボックスは、チェックボックスのイベントプロシージャをVBEで自動作成させることができることはすでにご紹介しました。
このイベントプロシージャの中に、チェックボックスの背景色を変えるコードを差し込めば、チェックボックスをON/OFF操作した瞬間に背景色を変える処理を実行させることができます。
例えばこんな感じです。
Private Sub CheckBox123_Click() With ActiveSheet.CheckBox123 If .Value = True Then .BackColor = &HFFFF00 Else .BackColor = &HFFFFFF End If End With End Sub
チェックボックスをクリックしたとき、チェックボックスの値がONだったら背景色を水色に、OFFだったら白色に変える、というコードです。
チェックボックスがOFFの状態で、チェックボックスをクリックしてみると…
このとおり、チェックボックスがONになったので、背景色が青色になりました。
そして再度チェックボックスをクリックすると…
今度はチェックボックスがOFFになり、背景色も白色に戻りました。
このように、チェックボックスを操作した時に実行させたい処理は、イベントプロシージャに組み込んでしまえば、チェックボックスを操作した瞬間に処理をさせられるので便利ですよ。
最後に
今回は、ActiveXコントロールのチェックボックスをVBAで操作する方法をご紹介しました。
ただチェックON/OFFだけでなく、今回例に挙げたような、チェックボックスの背景色をチェック結果によって変えてあげれば、入力者に分り易いですし、エクセルの使い勝手を向上させられるかもしれませんね。
それでは、最後までお読みいただきありがとうございました!