準・究極の選択

よろしくお願い致します。
OS:XP エクセル2003 VBAのことは、まったくの初心者です。
質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。
ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。

Private Sub CheckBox7_Click()
If CheckBox7.Value = True Then
CheckBox8.Enabled = True
CheckBox9.Enabled = True
CheckBox10.Enabled = True
CheckBox11.Enabled = True
Else
CheckBox8.Value = False
CheckBox9.Value = False
CheckBox10.Value = False
CheckBox11.Value = False
CheckBox8.Enabled = False
CheckBox9.Enabled = False
CheckBox10.Enabled = False
CheckBox11.Enabled = False
End If
End Sub

A 回答 (2件)

質問の内容をきちんと把握していなくてすみませんが・・・



ボタンの操作は理解されているようですし、コードの1行、1行はそれほど複雑にはならないと思いますので、御質問のコードが組めれば、他の部分もご自身で作成可能だと推察いたします。

若干面倒なのは、条件と組合せが少々複雑なので、ご自分がお考えの制御をうまく整理することでしょう。
実際に実行した時に、起きるケースを分類し、それに対してどのような処理をするのが効率的かを考えるのが大切だと思われます。
思いついたままをコード化してゆくと、割れ鍋に閉じ蓋的になって長く(結果的に解り難い)コードの山になる可能性があります。
まずは、処理する内容を整理してみることをお勧めします。そうすれば意外と簡単にコード化が可能なのでは?

例えば、ご質問文で、ご自身のお考えの内容をうまく表しているとお考えと思いますが、表現されていない部分がまだまだあります。(例えば、7をチェックした後で、キャンセルしたらどのような状態になるのか。キャンセルは不可能なのか、とか・・・)

あるいは・・
>9~11のどれかにチェックが入っている状態で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるよう~
7が無チェックの時に、9にチェックすると上記の処理から8~11(もちろん9も)チェッククリアでチェックできなくなるって、どこか矛盾していませんか?(正しく制御されていれば、最初から9にチェックできないはず)

コード化する前に、処理の内容を整理してみましょう。
    • good
    • 0

>ラジオボタンのような


というのならチェックボックスの変わりに「オプションボタン」で代用できませんか。同じ機能だと思うのですが。

参考URL:http://www.sigoto.co.jp/excel/activex/actmenu03. …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!