[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームのオプションボタンの使い方』(ラテ)
Excel2010でユーザーフォームを作っています。
1つのグループのオプションボタンが2個配置されています。
例えば OptionButton1=True の時、TextBox1の値とワークシートのD列の値が連動、 OptionButton2=True の時、TextBox1の値とワークシートのE列の値が連動、 という感じです。
しかし、D列・E列とも連動する必要が無い場合(つまりどちらのオプションボタンも値がFalseの時) があり、その時はTextBox1にも値は入らず、両方のオプションボタンがFalse且つTextBox1 に値が何か入っている時は「グループを選択してください」というようなメッセージを出して Exit Subするようになっています。
ここまではいいのですが、オプションボタンって、一度クリックしたら同じグループの いずれかのボタンをクリックしないといけませんよね?(両方Falseにすることができない) どちらも選択する必要が無いのに間違ってオプションボタンをクリックした時、もう一度クリックで Falseにするようなことはできませんでしょうか。
こちらで考えた案としては
1:もう一つダミーのオプションボタンを配置して「選択なし」のような値を渡す
2:オプションボタンをチェックボックスに変える(しかしこれだと複数の項目を選んでしまう可能性がある)
やはり1の案で行くしかないでしょうか。 OptionButtonのイベントを見てみましたがうまくいかないので…
よろしくお願いします。
1のようにしておき、フォームが起動した時点でデフォルトでそのボタン=TRUEにする。 それで余計な操作をされる心配はなくなると思うのですが、何か問題があるのですか? (Jera)
(Jera)様
やはりそれしかないですかね… 問題があるわけではないのですが、コントロールが非常に多いフォームなのでできるだけ 余計なものは入れたくないかなと… やはり1の案でいきます。
(ラテ)
>両方Falseにすることができない これ出来ますよ!!
例えば Userform1に Optionbutton1とOptionbutton2 を配置したとします。
両方をFalseにする方法
方法1 初期設定 という項目名でも付けて コマンドボタン(Commandbutton1)を配置する
Private Sub CommandButton1_Click() OptionButton1 = False OptionButton2 = False End Sub
とすれば、コマンドボタンクリックで両方のオプションボタンは Falseになります。これが簡単です。
方法2
方法1のCommandbutton1は、削除(イベントプロシジャーも削除)
代わりに以下のコード
Private Sub OptionButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If OptionButton1.Value Then option_init OptionButton1 End If End Sub Private Sub OptionButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If OptionButton2.Value Then option_init OptionButton2 End If End Sub Sub option_init(opt As MSForms.OptionButton) opt.Visible = False opt.Value = False opt.Visible = True End Sub
Trueのオプションボタンを再度クリックすると、オプションボタンがFalseになります
要は、オプションボタンにフォーカスあるときは、Falseにはならないので、そこを一工夫ですね
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.