- ベストアンサー
VBS 条件中の条件
'ビットレート自動計算機 '変数 msgA = "時間(アワー)を入力してください" msgB = "時間(ミニッツ)を入力してください" msgC = inputbox(msgA,"ビットレート自動計算機","半角で入力") msgD = inputbox(msgB,"ビットレート自動計算機","半角で入力") '変数 num1 = msgC * 3600 num2 = msgD * 60 num3 = num1 + num2 '計算 bitrate = 335544\num3 - 50 '分岐 if bitrate <= 0 then msgbox "動画時間が長すぎます elseif 0 < bitrate < 150 then msgbox "ビットレートが" & bitrate & "になりますが、よろしいですか?",vbyesno end if msgbox "適正ビットレートは" & bitrate & "です" 質問 1:「動画時間が長すぎます」のあとに最初に戻りたいのですがどうしたらいいですか? 2:elseifでyesボタンを押したときは処理を続けて、noボタンを押したときは最初に戻りたいのですがどうしたらいいですか? 3:アワーをhour、ミニッツをminuteと表示したいんですがどうしたらいいですか? よろしくお願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
[ANo.1] の DOUGLAS_ です。 ※失礼いたしました。 >ElseIf 0 < bitrate < 150 Then は無効でしたね(「0 < bitrate」の部分のみの判断しかしてくれません)。 >If bitrate <= 0 Then で始まっていますので、「ElseIf」は 0 < bitrate に決まっていますから、冗長な条件指定になります。 ElseIf bitrate < 150 Then で十分ですが、 bitrate >= 150 の場合は、前回答でしたら、最初に戻ってしまいます。 ※これも、余談ですが >3:アワーをhour、ミニッツをminuteと表示したい 「msgC」・「msgD」が小数で入力された場合のお話でしたら、それぞれ Hour(num3 / 86400) Minute(num3 / 86400) で取得できます。
その他の回答 (3)
- nda23
- ベストアンサー率54% (777/1415)
繰り返しにおける継続条件と終了条件ですね。 操作している人が納得するまで、つまり「はい」と 応えるまでループする訳ですね。 メッセージの変更は単に文字列を直すだけです。 msgA = "時間(hour)を入力してください" msgB = "時間(minute)を入力してください"Answer = vbNo Do Until Answer = vbYes msgC = inputbox(msgA,"ビットレート自動計算機","半角で入力") msgD = inputbox(msgB,"ビットレート自動計算機","半角で入力") ★=中略= Answer = msgbox("ビットレートが" & bitrate & _ "になりますが、よろしいですか?",vbyesno) Loop msgbox "適正ビットレートは" & bitrate & "です"
- nattocurry
- ベストアンサー率31% (587/1853)
一例です。 '変数 msgA = "時間(アワー)を入力してください" msgB = "時間(ミニッツ)を入力してください" Do msgC = inputbox(msgA,"ビットレート自動計算機","半角で入力") msgD = inputbox(msgB,"ビットレート自動計算機","半角で入力") '変数 num1 = msgC * 3600 num2 = msgD * 60 num3 = num1 + num2 '計算 bitrate = 335544\num3 - 50 If bitrate <= 0 Then MsgBox "動画時間が長すぎます" ElseIf 0 < bitrate And bitrate < 150 Then If MsgBox("ビットレートが" & bitrate & "になりますが、よろしいですか?", vbYesNo) = vbNo Then bitrate = 0 End If End If Loop Until bitrate > 0 bitrateが0より大きい場合にループを抜けるようにして、0<bitrate<150での確認メッセージに対してNoだった場合に、bitrateを0にしてループさせています。 >3:アワーをhour、ミニッツをminuteと表示したいんですがどうしたらいいですか? えぇっと、、、好きなように表示させればいいじゃないですか。 と思ったのですが、何に困っているのでしょうか?
- DOUGLAS_
- ベストアンサー率74% (397/534)
>1:「動画時間が長すぎます」のあとに最初に戻りたい >2:elseifでyesボタンを押したときは処理を続けて、 > noボタンを押したときは最初に戻りたい '変数 Do msgA = "時間(アワー)を入力してください" ・ ・ ・ ElseIf 0 < bitrate < 150 Then Response = MsgBox("ビットレートが" & bitrate & "になりますが、よろしいですか?", vbYesNo) If Response = vbYes Then Exit Do End If Loop MsgBox "適正ビットレートは" & bitrate & "です" >3:アワーをhour、ミニッツをminuteと表示したい お尋ねの意味が解りません。 <(_ _)>