オプションボタンの選択を取り消すには?

解決


にょきにょき  2004-02-20 05:47:45  No: 82175  IP: [192.*.*.*]

オプションボタンを切り替えた時に、メッセージを出し、「いいえ」を選択したらValueを元の位置に戻したいのですが
クリックイベントが起こるため、「はい」を押すまでプロシージャを抜けることができなくなります。
Exit Subを使ってもうまく行かないため、どうしていいのか分からなくなりました(TT
なにかよい回避方法をご存知でしたら教えてください。よろしくお願いします。
サンプルコードは下記のような感じです。

Private Sub optTest_Click(Index As Integer)
    Dim intA As Integer
    
    intA = MsgBox("ほんとに変更する?", vbYesNo, "ほんとに?")
    If intA = vbNo Then
        If optTest(0).Value = True Then
            optTest(1).Value = True
        ElseIf optTest(1).Value = True Then
            optTest(0).Value = True
        End If
    End If
End Sub

編集    削除
punto  2004-02-20 06:17:52  No: 82176  IP: [192.*.*.*]

とりあえずもっとも安直な方法・・・

Private m_bPassive As Boolean

Private Sub optTest_Click(Index As Integer)
    Dim intA As Integer

    If m_bPassive Then
        m_bPassive = False
        Exit Sub
    End If
    intA = MsgBox("ほんとに変更する?", vbYesNo, "ほんとに?")
    If intA = vbNo Then
        m_bPassive = True
        If optTest(0).Value = True Then
            optTest(1).Value = True
        ElseIf optTest(1).Value = True Then
            optTest(0).Value = True
        End If
    End If
End Sub

Design 時にどっか一個の OptionButton を on しておくか、code 内で set 
する場合はその前に m_bPassive = True してから set すること。
うっわぁ〜ださださぁ・・・

なんかもっと smart な方法はないのかよ・・・

編集    削除
マフユ  2004-02-20 06:22:13  No: 82177  IP: [192.*.*.*]

MsgBox  で無ければならないのでしょうか?
非表示にしてある Command ボタン「ほんとに変更する」と
「取りやめる」をオプションボタンを切り替えた時に表示して
どちらかの  Command ボタンを押したらオプションボタンの変更を
してから、再度 Command ボタンを非表示にする...はどう?

編集    削除
ねろ  2004-02-20 06:29:21  No: 82178  IP: [192.*.*.*]

こういうのはflgで蹴っ飛ばす。
Private Sub optTest_Click(Index As Integer)
    Static flg
    If flg = True Then Exit Sub
    flg = True
    Dim intA As Integer
    intA = MsgBox("ほんとに変更する?", vbYesNo, "ほんとに?")
    If intA = vbNo Then
        If optTest(0).Value = True Then
            optTest(1).Value = True
        ElseIf optTest(1).Value = True Then
            optTest(0).Value = True
        End If
    End If
    flg = False
End Sub

編集    削除
にょきにょき  2004-02-20 08:29:00  No: 82179  IP: [192.*.*.*]

なるほど、フラグを使えばいいのですね。
解決しました。ありがとうございました〜

編集    削除