投稿者 もも  (学生) 投稿日時 2011/11/19 14:47:57
るきおさん、またしてもごめんなさい。
確認するためIntegerに変えてエラーを確認後、それを投稿してしまったようです。
本来はStringです。

つまりSelect Case内に書いてある「%」は消したほうがいいということですね。
また、よく考えてみるとこのプログラムに限って言えば101%など100以上になることはありえないので、A判定の部分の上限を決めてしまえばよかったですよね。
判定の部分のコードをFormatPercent関数を使わず下のようにしてみるときちんと判定されることを確認しました。

  Grade = (Total / Totalpossiblepoint) * 100

            ' Convert to Percentage
             Grade = Convert.ToInt16(Grade)
            MsgBox(Grade)

            'Define the Final Grade
            Select Case Grade
                Case 90 To 100
                    FinalGrade = "A"
                    PassAtoC()
                Case 80 To 89
                    FinalGrade = "B"
                    PassAtoC()
                Case 70 To 79
                    FinalGrade = "C"
                    PassAtoC()
                Case 60 To 69
                    FinalGrade = "D"
                    PassD()
                Case Else
                    FinalGrade = "F"
                    Failed()
            End Select

Grade = (Total / Totalpossiblepoint) * 100
のように100倍して整数に変換すれば、その後のSelect Caseでもきちんと動くようになってくれました。
余談ですが、「整数」といいましたが、Integerが選択可能項目なかったのでInt16を使用しましたが、Int16はIntegerの一種でしたでしょうか?結果的に動いてるわけですが・・・。

しかしFormatPercent関数を使用した場合も気になるのでもう少しお付き合い願います。