こんにちは、Ryoです。
VBAで扱うことの多いユーザーフォームですが、そのフォーム上でVisibleプロパティを利用することで指定したコントロール(コマンドボタン等)の表示ON/OFFを切り替えることができます。知っておくと便利なので、今回はその内容について書いていきます。
1.サンプル概要
例としてユーザーフォーム上にチェックボックスとコマンドボタンを設置し、チェックボックスのオン/オフに合わせてコマンドボタンの表示/非表示を切り替えています。
UserFormは以下画像の通り、「UserForm1」に「Check Box1」、「CommandButton1」を配置しています。
≪Check Box1がON≫
≪Check Box1がOFF≫
2.サンプルコード
Private Sub UserForm_Initialize() 'ユーザーフォーム初期化処理 'チェックボックス1を「ON」(=True)にする CheckBox1.Value = True End Sub Private Sub CheckBox1_Change() 'チェックボックスのチェンジイベントを利用して 'チェックON/OFFに合わせてコマンドボタン表示切替を行う 'チェックボックス1のON/OFF確認 If CheckBox1.Value Then 'ONであればコマンドボタン1を表示 CommandButton1.Visible = True Else 'OFFであればコマンドボタンを非表示 CommandButton1.Visible = False End If End Sub
コマンドボタン等のコントロールに対して表示/非表示を取得・設定するにはVisibleプロパティを使用します。
構文:オブジェクト.Visible =True / False
True指定で表示、False指定で非表示となります。
サンプルではチェックボックスのChangeイベントを利用していますので、CheckBox1のON/OFFと連動してボタンの表示/非表示を切り替えています。
その処理を実行する上では、ユーザーフォームの初期処理としてUserForm_Initialize()にCheckBox1をONにしておく記述をすることで、その後のPrivate Sub CheckBox1_Change()の処理と整合をとっています。
処理自体はチェックボックスのON/OFFに合わせたボタン表示/非表示なので、If CheckBox1.Value Thenで状態を確認してONならCommandButton1.Visible = True(表示)、OFFならCommandButton1.Visible = False(非表示)としています。
3.まとめ
Visibleプロパティは表示/非表示の取得や設定ができますので、この例に限らず色々な用途で使用できるものと思います。
今回の例の場合はユーザーフォーム上でのボタンの押し間違いや操作性を向上する一助にはなるかと思いますので、何か機会があれば利用をご検討くださいませ。
以上、チェックボックスでボタン表示/非表示を切り替える方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo