-1

秋 #### や春 #### などの有効な学期をチェックする関数を作成しようとしていますが、このエラーが発生し続けます

Microsoft VBScript コンパイル エラー '800a03f6'
予期される 'End'
Else
^

これが私のコードです...

Function IsSemester(UserInput)
' Validation: Spring, Fall

Temp=UserInput

If Len(Temp)=9 Then IsSemester=True

For P=1 to 4

If Left(Temp,P,1)<>"Fall" Then IsSemester=False

Next

If Mid(Temp,5,1)<>" " Then IsSemester=False

For P=6 to 9

If Not IsInteger(Mid(Temp,P,9)) Then IsSemester=False

Next

Else

IsSemester=True 

End If

If Len(Temp)=11 Then IsSemester=True

 For C=1 to 6

If Left(Temp,C,6)<>"Spring" Then IsSemester=False

 Next

If Mid(Temp,7,1)<>" " Then IsSemester=False 

For C=8 to 11

If Not IsInteger(Mid(Temp,8,11)) Then IsSemester=False

Next

Else 

IsSemester=True
End If
End Function
4

1 に答える 1

4

簡単すぎるので、コードをインデントすると問題が見つかります。

Function IsSemester(UserInput)
' Validation: Spring, Fall

    Temp=UserInput

    If Len(Temp)=9 Then IsSemester=True

    For P=1 to 4

        If Left(Temp,P,1)<>"Fall" Then IsSemester=False

    Next

    If Mid(Temp,5,1)<>" " Then IsSemester=False

    For P=6 to 9

        If Not IsInteger(Mid(Temp,P,9)) Then IsSemester=False

    Next

    Else

        IsSemester=True 

    End If

    If Len(Temp)=11 Then IsSemester=True

    For C=1 to 6

        If Left(Temp,C,6)<>"Spring" Then IsSemester=False

    Next

    If Mid(Temp,7,1)<>" " Then IsSemester=False 

    For C=8 to 11

        If Not IsInteger(Mid(Temp,8,11)) Then IsSemester=False

    Next

    Else 

        IsSemester=True
    End If
End Function

使用する場合

IF Len(temp)=9 Then IsSemester=True

これはスタンドアロンのIfステートメントであることを意味し、同じ行のTHENの後のステートメントのみがその条件によって制御されるため、次の行のForループはそのIFに関連しない別個のステートメントです。コードを次のように変更する必要があります

If Len(Temp)=9 Then
    IsSemester = True

    '<whatever your code here>
End If
于 2012-04-27T04:55:51.783 に答える