プロが教える店舗&オフィスのセキュリティ対策術

'ビットレート自動計算機


'変数
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と表示したいんですがどうしたらいいですか?

よろしくお願いします

A 回答 (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)
で取得できます。
    • good
    • 0

繰り返しにおける継続条件と終了条件ですね。


操作している人が納得するまで、つまり「はい」と
応えるまでループする訳ですね。
メッセージの変更は単に文字列を直すだけです。

msgA = "時間(hour)を入力してください"
msgB = "時間(minute)を入力してください"Answer = vbNo
Do Until Answer = vbYes
    msgC = inputbox(msgA,"ビットレート自動計算機","半角で入力")
    msgD = inputbox(msgB,"ビットレート自動計算機","半角で入力")
    ★=中略=
    Answer = msgbox("ビットレートが" & bitrate & _
        "になりますが、よろしいですか?",vbyesno)
Loop
msgbox "適正ビットレートは" & bitrate & "です"
    • good
    • 0

一例です。



'変数
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と表示したいんですがどうしたらいいですか?

えぇっと、、、好きなように表示させればいいじゃないですか。
と思ったのですが、何に困っているのでしょうか?
    • good
    • 0

>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と表示したい
 お尋ねの意味が解りません。   <(_ _)>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!