VBA39_成績評価の自作関数を作成

おはようございます。Benです。今日は前回の応用で、自作関数のもう少し実用的なものをノートします。

20160413a.PNG
今回は大学の成績とかで使われる、点数によって優、良とかの評価を自動判定する実践編です。条件はご覧の4パターン。端的に言うと点数を引数として渡すと、評価が戻り値となる関数を作ります。

Sub 成績()
  Dim A As Integer
  Dim B As Integer
  Dim C As Integer
  A = 76 'Aさんの点数
  B = 82 'Bさんの点数
  C = 56 'Cさんの点数
  MsgBox "Aさんの評価は" & 評価(A)
  MsgBox "Bさんの評価は" & 評価(B)
  MsgBox "Cさんの評価は" & 評価(C)
End Sub
まず直接実行するSubプロシージャ部分です。Aさん、Bさん、Cさんの点数をそれぞれ変数A,B,Cを2~4行目で定義して5~7行目で代入します。あとは8~10行目で評価という自作関数にそれぞれの点数を引数で渡して戻り値を冒頭文字列とともにメッセージボックスに表示するものです。

Function 評価(P As Integer) As String
  If P >= 80 Then
    評価 = "優"
  ElseIf P >= 70 Then
    評価 = "良"
  ElseIf P >= 60 Then
    評価 = "可"
  Else
    評価 = "不可"
  End If
End Function
関数の部分です。今回はシンプルにIf文を使用しました。変数Pは渡された得点が代入され、その値で分岐します。80点以上なら優、そうでなくて70点以上なら良、そうでなくて60点以上なら可、いずれでもなければ不可という意味です。「良」などは上記の条件では80点未満も含まれていますが、先に80点以上で優だけどそうではなくての部分でおのずと80点未満になるので、あえて条件に加えなくてもOKです。順に判定していくと、最後は条件として60点未満しか残っていないので、ElseIfでの条件分岐は不要でElseでOKです。戻り値は文字列なので冒頭のFunctionの最後にAs Stringとし、評価という関数自体が文字列型であることを定義しています。

20160413b.PNG 20160413c.PNG 20160413d.PNG
実行結果は御覧のとおりです。ちゃんと評価が振り分けられています。それにしても、取り扱う変数が多くなるとスペルミスとかで取り違えることもあります。次回は変数の取り違えを防ぐ方法をノートします。

この記事へのコメント


この記事へのトラックバック