コマンドボタンの選択可否を切り替える(文字を淡色表示する)には?

Question 35.1 Previous Next
ユーザーフォームに数個のオプションボタンと、コマンドボタンを2個(実行と中止)、のっけてあります。
オプションボタンを一つ選択しないと、実行ボタンを押せないように薄く表示させたいのですが、どのようにすればよいのでしょうか?
お願いいたします。
Answer   Copyright (C) 2000.11.29 永井善王
右図のような状態にしたいのですね。
ユーザーフォーム
コントロール(この場合はコマンドボタン)がフォーカスを取得できるかどうか、およびユーザーの操作で発生したイベントに応答するかどうかは、Enabledプロパティの値を設定して切り替えます。
  Trueにすれば、 マウスやキーボードから操作できます。
  Falseにすれば、マウスやキーボードから操作できなくなります。

どちらの場合も、マクロコードで操作することは可能です。

それでは今から、順を追って組んでみましょう。

1. ユーザーフォームが初めて表示されるときに、コマンドボタン1を選択不可能にしておく
Private Sub UserForm_Initialize()      'ユーザーフォームが初期表示されたときに実行する
    CommandButton1.Enabled = False     'コマンドボタン1を選択不可能にする
End Sub
2. オプションボタン 1または 2がクリックされたときに、コマンドボタン1を選択可能にする
Private Sub OptionButton1_Click()      'オプションボタン1がクリックされたときに実行する
    CommandButton1.Enabled = True      'コマンドボタン1を選択可能にする
End Sub

Private Sub OptionButton2_Click()      'オプションボタン2がクリックされたときに実行する
    CommandButton1.Enabled = True      'コマンドボタン1を選択可能にする
End Sub
3. コマンドボタン1がクリックされたら、それを選択不可能にしてから、オプションボタン 1と 2をオフにする
Private Sub CommandButton1_Click()     'コマンドボタン1がクリックされたときに実行する
    CommandButton1.Enabled = False     'コマンドボタン1を選択不可能にする
    If OptionButton1.Value Then
        MsgBox "オプション1が選択されました", vbInformation, "すぐマク"
        OptionButton1.Value = False    'オプション1をオフにする
    Else
        MsgBox "オプション2が選択されました", vbInformation, "すぐマク"
        OptionButton2.Value = False    'オプション2をオフにする
    End If
End Sub
4. コマンドボタン 2がクリックされたときのマクロ
Private Sub CommandButton2_Click()
    MsgBox "中止ボタンが押されました", vbInformation, "すぐマク"
End Sub

サンプルブックのダウンロードは ここをクリック  (YNxv9a74_CommandButton.xls 49KB)
※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。

 

Excel VBA Macro