メッセージボックスでの選択から次の処理を決めるには?

解決


iori  2005-07-12 17:44:15  No: 123466  IP: [192.*.*.*]

Windows2000, VB6.0を使っています。
メッセージボックスの「はい」「いいえ」の選択によって、次の処理を
二通りに分けたいのですが、どのようにすればいいのかわかりません。
どなたかご回答をよろしくお願いします。

ElseIf txtTitle.Text = "" Then
    MsgBox "タイトルがありません。" & vbCrLf &_
 "このまま保存しますか?", vbYesNo, "タイトル確認"
    If vbNo Then
        txtTitle.SetFocus
    ElseIf 【次の処理に進みたい】
    End If
ElseIf txtDisplay.Text = "" Then
    MsgBox "テキストに何か書いてください。"

【  】の部分について、特に悩んでいます。
よろしくお願いします。
    txtDisplay.SetFocus

編集 削除
iori  2005-07-12 17:49:51  No: 123467  IP: [192.*.*.*]

すみません、いちばん最後の行の

txtDisplay.SetFocus  は、

ElseIf txtDisplay.Text = "" Then
    MsgBox "テキストに何か書いてください。"

の後に書きたかったのですが間違えました。

編集 削除
特攻隊長まるるう  2005-07-12 18:12:56  No: 123468  IP: [192.*.*.*]

MsgBox の戻り値を変数に受けてみて下さい。
[VB6.0]
    Dim wAns As VbMsgBoxResult
    wAns = MsgBox("ok?", vbYesNo)
    Select Case wAns
        Case VbMsgBoxResult.vbYes
            MsgBox "Yes!"
        Case VbMsgBoxResult.vbNo
            MsgBox "No!"
    End Select

編集 削除
ガッ  2005-07-12 18:15:14  No: 123469  IP: [192.*.*.*]

('A`)<…えーと…どこから説明したらいいのか…

とりあえず、サンプルコードでも書いてみるか。    
|    Dim a   As VbMsgBoxResult
|    
|    a = MsgBox("[はぃ]∩( ・ω・)∩[ぃぃえ]", vbYesNo, "ハイ/イイエ")
|    If a = vbYes Then
|        MsgBox "[はぃ]⊂( ・ω・)ハィハィ"
|    Else
|        MsgBox "Σ( ・ω・)⊃[ぃぃえ]"
|    End If
という感じです。

編集 削除
ガッ  2005-07-12 18:15:42  No: 123470  IP: [192.*.*.*]

玉洒タ…>orz

編集 削除
ガッ  2005-07-12 18:16:12  No: 123471  IP: [192.*.*.*]

ば、化けたし…(ororz

編集 削除
0123  2005-07-12 18:17:57  No: 123472  IP: [192.*.*.*]

> If vbNo Then
>    txtTitle.SetFocus
> ElseIf 【次の処理に進みたい】
> End If

何とvbNoを比較してるの?

MsgBoxからの戻り値を取りたいなら
iRet = MsgBox("hogehoge",vbYesNo,"hogehoge")

もっとちゃんとヘルプを呼んで関数を使いましょう。

編集 削除
0123  2005-07-12 18:18:58  No: 123473  IP: [192.*.*.*]

あ。。かぶってしまった。

編集 削除
通ってみた  2005-07-12 18:20:29  No: 123474  IP: [192.*.*.*]

まず、MsgBoxを

Ret = MsgBox ("タイトルがありません。" & vbCrLf &_
 "このまま保存しますか?", vbYesNo, "タイトル確認")

という感じにした方が後々楽かと
んで、If文なりSelect Case文なりで分岐すればいいですよね
(分岐先の内容はそちらで)


一応こんな感じで

Select Case Ret

    Case VbYes
        Yesの時の処理

    Case VbNo
        Noの時の処理

End Select

ちなみにCase内での処理が終わってCaseから抜けるのをどうすればいいのか、という悩みは必要ありません
勝手に抜けます(End Selectの次から処理再開)

編集 削除
iori  2005-07-12 18:27:22  No: 123475  IP: [192.*.*.*]

Select Case文を使った分と、If文を使った分、両方でできました。
ヘルプではよく分かりませんでしたが、 
インターネットで調べてみると参考になるものが多くありました。
すごく初歩的な質問をしてしまってすみませんでした。
回答をくださったみなさま、ありがとうございました。

編集 削除
ねろ  2005-07-12 18:36:01  No: 123476  IP: [192.*.*.*]

この場合は
If MsgBox("タイトルがありません。" & vbCrLf & "このまま保存しますか?", _
      vbYesNo, "タイトル確認") = vbNo Then
      txtTitle.SetFocus
End If
だけでも良さそうな。
こう言うコードは良くないのかな。。。。。

編集 削除
特攻隊長まるるう  2005-07-12 18:56:10  No: 123477  IP: [192.*.*.*]

>こう言うコードは良くないのかな。。。。。
Boolean 型でもないしAPIも関係ないですし…ボク使ってますよ?(^^)
問題あるんだったらまた情報下さい〜
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200505/05050039.txt

編集 削除
iori  2005-07-12 19:24:14  No: 123478  IP: [192.*.*.*]

追記ありがとうございます。
ねろさんのコードも試してみたところ、ちゃんと動きました。
まるるうさんのリンクの方も、見させていただきました。
サンプルコードをたくさんありがとうございました。

編集 削除