CheckBoxを1対1で排他処理する
ちょっと作ってみたので書いてみる
Private m_conflict As Boolean ' 排他処理状態を示すフラグ '--------------------------------------- ' チェックボックスの排他処理 '--------------------------------------- Private Sub CheckBoxExeclusion(One As Object, The_Other As Object) If One.Value = True And The_Other.Value = True Then m_conflict = True Dim ret As VbMsgBoxResult ret = MsgBox("「" & One.Caption & "」は" & vbCrLf & _ "「" & The_Other.Caption & "」と同時にチェックできません。" & vbCrLf & _ "それでも「" & One.Caption & "」にチェックしますか?", vbYesNo) If ret = vbYes Then One.Value = True The_Other.Value = False Else One.Value = False The_Other.Value = True End If m_conflict = False End If End Sub '--------------------------------------- ' チェックボックス A '--------------------------------------- Private Sub CheckBoxA_Click() If Not m_conflict Then Call CheckBoxExeclusion( CheckBoxA, CheckBoxB ) End Sub '--------------------------------------- ' チェックボックス B '--------------------------------------- Private Sub CheckBoxB_Click() If Not m_conflict Then Call CheckBoxExeclusion( CheckBoxB, CheckBoxA ) End Sub ' ' .... その他処理については省略 .... ' '--------------------------------------- ' フォームの初期化 '--------------------------------------- Private Sub UserForm_initailize() m_conflict = False End Sub