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

解決


iori  2005-07-13 02:44:15  No: 123466

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-13 02:49:51  No: 123467

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

txtDisplay.SetFocus  は、

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

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


特攻隊長まるるう  2005-07-13 03:12:56  No: 123468

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-13 03:15:14  No: 123469

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

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


ガッ  2005-07-13 03:15:42  No: 123470

玉洒タ…>orz


ガッ  2005-07-13 03:16:12  No: 123471

ば、化けたし…(ororz


0123  2005-07-13 03:17:57  No: 123472

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

何とvbNoを比較してるの?

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

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


0123  2005-07-13 03:18:58  No: 123473

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


通ってみた  2005-07-13 03:20:29  No: 123474

まず、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-13 03:27:22  No: 123475

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


ねろ  2005-07-13 03:36:01  No: 123476

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


特攻隊長まるるう  2005-07-13 03:56:10  No: 123477

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


iori  2005-07-13 04:24:14  No: 123478

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加