dポイントプレゼントキャンペーン実施中!

VB2010
7 Pro SP1

8つのチェックボックスと4つのラジオボタンがあり、チェックボックスにどれか1つでも
チェックが入っていたらラジオボタンを無効にし、チェックが全部外れたら
ラジオボタンを有効にしたいです。

下記のようなifで出来るかと思ったのですが、フォーム、ラジオボタン、チェックボックス
どれに記述しても動きません。
どこに記述すればいいでしょうか?

If CheckBox1.Checked Or CheckBox2.Checked Or CheckBox3.Checked Or CheckBox4.Checked Or CheckBox5.Checked Or CheckBox6.Checked Or CheckBox7.Checked Or CheckBox8.Checked Then
RadioButton4.Enabled = False
RadioButton6.Enabled = False
RadioButton7.Enabled = False
RadioButton8.Enabled = False
Else
RadioButton4.Enabled = True
RadioButton6.Enabled = True
RadioButton7.Enabled = True
RadioButton8.Enabled = True
End If

A 回答 (3件)

こんにちは。



うまくいきませんでしたか?私の環境では正しく実行されますね。
エラーが表示されていたら、内容を教えて頂けないでしょうか?
「どれか1つでもチェックされていたら無効に」の回答画像3

この回答への補足

エラーも出ずチェックしてもラジオボタンが無効になりません。
調べていますが、難しいですね。

補足日時:2012/06/01 16:47
    • good
    • 0

こんにちは。



イベントを使用すれば実現できます。↓



Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged, _
CheckBox5.CheckedChanged, CheckBox6.CheckedChanged, CheckBox2.CheckedChanged
'変数宣言
Dim FrmCheckBox As CheckBox = Nothing
Dim FrmRadioButton As RadioButton = Nothing
Dim EnbFlg As Boolean = True

Try
'チェックボックス検査ループ
For Each FrmCntrl As Control In Me.Controls
'コントロールの種別がチェックボックスか検査
If TypeOf FrmCntrl Is CheckBox Then
'フォーム上のチェックボックスを取得
FrmCheckBox = DirectCast(FrmCntrl, CheckBox)

If FrmCheckBox.Checked = True Then
'ラジオボタン表示フラグ更新
EnbFlg = False

'ループ脱出
Exit For
End If
End If
Next

'ラジオボタン表示/非表示処理
For Each FrmCntrl2 As Control In Me.Controls
'コントロールの種別がラジオボタンか検査
If TypeOf FrmCntrl2 Is RadioButton Then
'フォーム上のラジオボタンを取得
FrmRadioButton = DirectCast(FrmCntrl2, RadioButton)

'ラジオボタン表示フラグ設定
FrmRadioButton.Enabled = EnbFlg
End If
Next

Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace, MsgBoxStyle.Critical)
End Try
End Sub

この回答への補足

ありがとうございます。
これで動作しなかったので、ちょっと調べてみます。

補足日時:2012/05/31 18:02
    • good
    • 0

すべてのチェックボックスの更新イベント。


まあ、コントロールを配列にしたほうが楽な気もするけどね。
    • good
    • 0

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