2017-05-21 6 views
-1

現在の分(例:20を入力し、現在は1:)と同じになるように分を入力すると、スクリプト。代わりにそれは私に与えます型付き応答=分(現在)無効なプロシージャエラー

無効なプロシージャコールまたは引数エラーです。

Dim Ho, Mi, Se, RH, RM, RS 
bOuterLoop = True 
Do While bOuterLoop 
reminder = InputBox(vbNewLine & "Enter a reminder for today," & " " & 
WeekdayName(Weekday(Now())) & " " & MonthName (Month(Now)) & " " & (Day(Now)) & ", " & (Year(Now)) & "!", "Set a Reminder") 
If IsEmpty(reminder) Then 
    WScript.Quit 
    End If 
If reminder="" then 
    reminder="REMINDER FOR YOU" 
    end if 
Ho = InputBox(vbNewLine & "At what hour would you like to be reminded?(24H)", "Time") 
If IsEmpty(Ho) Then 
    WScript.Quit 
    End If 
if Ho = "" then 
    WScript.Quit 
    End If 
Mi = InputBox(vbNewLine & "At what minute in the hour do you want to be 
reminded?", "Time") 
If IsEmpty(Mi) Then 
    WScript.Quit 
    End If 
if Mi = "" then 
    WScript.Quit 
    End If 
RH = Hour(Now) 
RM = Minute(Now) 
RS = Second(Now) 
if Mi = RM then 
a=msgbox(reminder, 0, "") 
    wscript.quit 
    end if 
Ho = Ho - RH 
Se = RS 
if RM > Mi then 
    Mi = Mi + 60 
    end if 
Mi = Mi - RM 
    Do 
     WScript.Sleep (3600000 * Ho) + ((60000 * Mi) - (1000 * Se)) 
     answer = MsgBox(reminder & " " & vbNewLine & vbNewLine & "Would you like to snooze the reminder?  ", 4+64, "Reminder") 
     If answer = vbNo Then 
      WScript.Quit 
      bOuterLoop = False 
      Exit Do 
     End If 

    Loop 
Loop 

私が間違ってやっているかを説明してください。

答えて

1

ここで使用しているロジックについてはわかりませんが、変数 'Mi'と 'RM'の値を比較するIf条件がFalseを返すと思います。

現在時刻を1:20とします。

あなたのコードでは、変数Miは、タイプvbStringのユーザーから取得した入力を格納します。

Mi="20" 

変数RM店タイプのvbIntegerあるミニッツ(今):ユーザーがだから、20に入り、あなたの変数は次のようになりますと仮定します。したがって、次のようになります。

RM=20 

ここで、これらの2つの変数を比較すると、それらは等しくありません。したがって、If条件はFalseを返し、スクリプトは終了しません。

If Cint(Mi) = RM then 
    a=msgbox(reminder, 0, "") 
    wscript.quit 
End If 
+0

Cintの()は何をするん:

あなたはあなたのコードで以下の変更を行うことができますか? –

+1

Cint()は、変数 'Mi'に含まれる値をIntegerに変換します。 – Gurman

+0

また、MiとRMを減算するのはなぜですか? –

関連する問題