Excel VBA コントロールの有効・無効を切り替える

スポンサーリンク

ユーザーフォームに設置されたコントロールの有効・無効を切り替える方法

コントロールを一時的に使用できなくするには、対象コントロールオブジェクトのEnabled【エナブル】プロパティを使用します。

Enabled【エナブル】は「使用可能」にするという意味があります。

また、一時的にコントロールを非表示にするには、対象コントロールオブジェクトのVisible【ビジブル】プロパティを使用します。

Visible【ビジブル】は「目に見える」という意味があります。

Enabled【エナブル】プロパティ

ユーザーフォームに設定されたコントロールを一時的に使用できなくするには、対象コントロールオブジェクトのEnabled【エナブル】プロパティを使用します。

Enabled【エナブル】プロパティの書式と設定値の説明

オブジェクト.Enable = 設定値

  • オブジェクト(必須)
    一時的に有効・無効を設定するコントロールオブジェクト名を指定します。
  • 設定値
    設定値 内容
    True コントロールは有効です。(既定値)
    False コントロールは無効です。

Visible【ビジブル】プロパティ

ユーザーフォームに設定されたコントロールを一時的に非表示にするには、対象コントロールオブジェクトのVisible【ビジブル】プロパティを使用します。

Visible【ビジブル】プロパティの書式と設定値の説明

オブジェクト.Visible = 設定値

  • オブジェクト(必須)
    一時的に非表示または表示を設定するコントロールオブジェクト名を指定します。
  • 設定値
    設定値 内容
    True コントロールを表示します。(既定値)
    False コントロールを非表示にします。

オプション選択のチェックボックスにチェックをした場合に
オブションを選択できるコードと解説

Private Sub UserForm_Initialize()
Frame1.Enabled = False
CheckBox2.Enabled = False
CheckBox3.Enabled = False
End Sub
1行目【Private Sub UserForm_Initialize()】
ユーザーフォームが表示される直前に発生するUserForm【ユーザーフォーム】コントロールオブジェクトのInitialize【イニシャライズ】イベントプロシージャーにコードを記述します。


2~4行目【Frame1.Enabled = False
CheckBox2.Enabled = False
CheckBox3.Enabled = False】

各コントロールオブジェクトのEnabled【エナブル】プロパティにFalseを設定してコントロールを無効の状態にします。



Private Sub CheckBox1_Click()
If CheckBox1 = True Then
Frame1.Enabled = True
CheckBox2.Enabled = True
CheckBox3.Enabled = True
Else
Frame1.Enabled = False
CheckBox2.Enabled = False
CheckBox3.Enabled = False
End If
End Sub
1行目【Private Sub CheckBox1_Click()】
最初に表示されるオブション選択のチェックボックスを表すCheckBox1コントロールオブジェクトのチェックボックスをクリックしたときに発生するClick【クリック】イベントプロシージャー内にコードを記述します。


2行目【If CheckBox1 = True Then】
If【イフ】ステートメントで条件分岐です。CheckBox1がTrueだったときつまり、CheckBox1のチェックボックスがチェックされているときを定義します。


3~5行目【Frame1.Enabled = True
CheckBox2.Enabled = True
CheckBox3.Enabled = True】

2行目の条件が成立したときつまりCheckBox1がチェックされていたときの処理です。各コントロールオブジェクトのEnabled【エナブル】プロパティに「True」を設定してコントロールを有効な状態にします。


6~9行目【Else
Frame1.Enabled = False
CheckBox2.Enabled = False
CheckBox3.Enabled = False】

Else【エルズ】キーワードを使用して以下に2行目の条件が不成立だった場合つまり、CheckBox1にチェックのチェックがはずれている場合の処理を記述します。各コントロールオブジェクトのEnabled【エナブル】プロパティに「False」を設定してコントロールを無効にします。


※コントロールを表示・非表示にする場合はEnabled【エナブル】プロパティの部分をVisible【ビジブル】プロパティに置き換えます。


Not【ノット】演算子

有効・無効や表示・非表示の切り替えにTrueやFalseを使用する代わりにNot【ノット】演算子を使用する方法もあります。Not【ノット】演算子は論理否定です。右辺の条件式が「True]の場合には「False」「False」の場合には「True」を返します。

Not【ノット】演算子を使用したボタンの表示・非表示切り替え例

Private Sub UserForm_Initialize()
CommandButton2.Visible = Not CommandButton2.Visible
End Sub
1行目【Private Sub UserForm_Initialize()】
ユーザーフォームが表示される直前に発生するUserForm【ユーザーフォーム】コントロールオブジェクトのInitialize【イニシャライズ】イベントプロシージャーにコードを記述します。


2行目CommandButton2.Visible = Not CommandButton2.Visible】
コマンドボタン2のVisible【ビジブル】プロパティをNot【ノット】演算子(論理否定)で初期値のTrue(表示)をFalse(非表示)に切り替えてフォームが表示されたときはコマンドボタン2が非表示になるように設定します。


Private Sub CommandButton1_Click()
CommandButton2.Visible = Not CommandButton2.Visible
CommandButton1.Visible = Not CommandButton1.Visible
End Sub
1行目【Private Sub CommandButton1_Click()】
コマンドボタン1がクリックされたときに発生するCommandButton【コマンドボタン】コントロールオブジェクトのClick【クリック】イベントプロシージャーにコードを記述します。


2行目【CommandButton2.Visible = Not CommandButton2.Visible】
コマンドボタン2のVisible【ビジブル】プロパティをNot【ノット】演算子(論理否定)を使用して
False(非表示)からTrue(表示)に切り替えます。


3行目【CommandButton1.Visible = Not CommandButton1.Visible】
コマンドボタン1のVisible【ビジブル】プロパティをNot【ノット】演算子(論理否定)を使用して
True(表示)からFalse(非表示)に切り替えます。


Private Sub CommandButton2_Click()
CommandButton1.Visible = Not CommandButton1.Visible
CommandButton2.Visible = Not CommandButton2.Visible
End Sub
1行目【Private Sub CommandButton2_Click()】
コマンドボタン2がクリックされたときに発生するCommandButton【コマンドボタン】コントロールオブジェクトのClick【クリック】イベントプロシージャーにコードを記述します。


2行目【CommandButton1.Visible = Not CommandButton1.Visible】
コマンドボタン1のVisible【ビジブル】プロパティをNot【ノット】演算子(論理否定)を使用して
False(非表示)からTrue(表示)に切り替えます。


3行目【CommandButton2.Visible = Not CommandButton2.Visible】
コマンドボタン2のVisible【ビジブル】プロパティをNot【ノット】演算子(論理否定)を使用して
True(表示)からFalse(非表示)に切り替えます。


以上で、コントロールの有効・無効を切り替える方法についての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告