0

学生が 1 年目、2 年目、または 3 年目にあるかどうか、または a) 勉強している証明書と b) 開始した日付に基づいて卒業したかどうかを判断できる関数が必要です。

これが私の最初の試みです - どんなフィードバックでも大歓迎です:

[編集: 問題は、関数を Excel で使用するとエラーが返されることです]

[編集 2: DateDiff セクションの m を "m" に変更すると、エラーが解消されました。現在、2 年生と 3 年生が「過去」とラベル付けされているという問題があります]

Function YearCalc(start, course)

    'Introduce length - the course length in years
    Dim length As Integer

    'Define length corresponding to specific courses

    If course = "Msc" Then
        length = 3
    ElseIf course = "Adv Dip" Then
        length = 2
    ElseIf course = "PG Cert" Then
        length = 1
    End If

    Dim lengthm As Integer

    lengthm = (length * 12)

    'Define diff as the month difference between two dates;
    'today's date and the date the course was started.

    diff = DateDiff("m", start, Date, vbMonday)

    'Compare the date difference to the length of the course,
    'such that if the difference is larger than length of the specific course
    'the student is marked as 'Past':

    If diff >= (lengthm) Then
        YearCalc = "Past"

    'If the difference is less than the length of the course, determine which
    'year they fall into:

    Else
        If 0 <= (diff - lengthm) < 1 Then
            YearCalc = 1
        ElseIf 1 <= (diff - lengthm) < 2 Then
            YearCalc = 2
        ElseIf 2 <= (diff - lengthm) < 3 Then
            YearCalc = 3
        End If
    End If

End Function
4

1 に答える 1

0

Select Case1つの値のみを返す理由の一部は二重比較であるため、に変更することをお勧めします。
0 <= AnyComparison常に評価しますTrue

Select Case course 
    Case "Msc" 
        length = 36
    Case "Adv Dip" 
        length = 24
    Case "PG Cert" 
        length = 12
End Select

Select Case (diff - lengthm)
    Case <0
        YearCalc = "Past"
    Case 0 to 11
        YearCalc = 1
    Case 12 to 23
        YearCalc = 2
    Case 24 to 35
        YearCalc = 3
    Case Else 
        YearCalc = "Course too long?"
End Select
于 2012-06-25T15:59:30.320 に答える