Excel VBA – 子或函数未定义错误

我得到这个方法的编译错误,我不明白为什么。 我得到“子或function没有定义”的错误。 它可能是一些愚蠢的东西,但逃脱我是毫无意义的。 提前致谢。

Public Function GetReportDate(dept As String) As String Dim dateOut As String 'this will be the returned value from the method Dim dateIn As String 'this is the date retrieved from the report Dim MonthNum As String Dim Temp As String 'this variable stores that date that will be manipulated Dim StartEnd(1 To 4, 1 To 4) As String Dim Period As String Dim Year As Integer 'select the date string Select Case dept Case "Min and AMF": Cells(2, 2).Select Case Else: Cells(2, 1).Select End Select Selection.Font.Bold = True 'store the month, day and year string to the array dateIn = ActiveCell.Value Temp = dateIn StartEnd(1, 1) = Mid(Temp, 1, 2) '1st month StartEnd(1, 2) = Mid(Temp, 14, 2) '2nd month StartEnd(2, 1) = Mid(Temp, 4, 2) '1st day StartEnd(2, 2) = Mid(Temp, 17, 2) '2nd day StartEnd(3, 1) = Mid(Temp, 7, 4) '1st year 'assign to two var MonthNum = StartEnd(1, 2) Year = StartEnd(3, 1) ' change the month format for the 1st month Select Case StartEnd(1, 1) Case "01": StartEnd(1, 1) = "Jan" Case "02": StartEnd(1, 1) = "Feb" Case "03": StartEnd(1, 1) = "Mar" Case "04": StartEnd(1, 1) = "Apr" Case "05": StartEnd(1, 1) = "May" Case "06": StartEnd(1, 1) = "Jun" Case "07": StartEnd(1, 1) = "Jul" Case "08": StartEnd(1, 1) = "Aug" Case "09": StartEnd(1, 1) = "Sep" Case "10": StartEnd(1, 1) = "Oct" Case "11": StartEnd(1, 1) = "Nov" Case "12": StartEnd(1, 1) = "Dec" End Select ' change the month format for the 2nd month Select Case StartEnd(1, 2) Case "01": StartEnd(1, 2) = "Jan" Case "02": StartEnd(1, 2) = "Feb" Case "03": StartEnd(1, 2) = "Mar" Case "04": StartEnd(1, 2) = "Apr" Case "05": StartEnd(1, 2) = "May" Case "06": StartEnd(1, 2) = "Jun" Case "07": StartEnd(1, 2) = "Jul" Case "08": StartEnd(1, 2) = "Aug" Case "09": StartEnd(1, 2) = "Sep" Case "10": StartEnd(1, 2) = "Oct" Case "11": StartEnd(1, 2) = "Nov" Case "12": StartEnd(1, 2) = "Dec" End Select 'Change the Date Format After the Min Qem has been executed 'If dept = "Min and AMF" Then ' the 1st and 2nd month are equal If StartEnd(1, 1) = StartEnd(1, 2) Then ' find the type of report If StartEnd(2, 2) - StartEnd(2, 1) <= 7 Then Period = "Week" Else Period = "Month" End If ' change the report period to the right format ActiveCell = Period & " of " & StartEnd(1, 1) & " " & StartEnd(2, 1) & " " _ & "to" & " " & StartEnd(2, 2) & " " & Year Else ' the 1st and 2nd month are NOT equal If 30 - StartEnd(2, 1) + StartEnd(2, 2) >= 20 Then Period = "Month" Else Period = "Week" End If 'change the header of the report to represt the period ActiveCell = Period & " of " & StartEnd(1, 1) & " " & StartEnd(2, 1) _ & " " & "to" & " " & StartEnd(1, 2) & " " & StartEnd(2, 2) _ & " " & Year End If 'return the dateout dateOut = Temp GetReportDate = dateOut End Function 

当我打电话的方法,这就是我正在使用的。

 CurReport = GetReportName(sDept) 

您所调用的函数与您定义的函数之间不匹配。 DateName不一样。

 Public Function GetReportDate(dept As String) As String GetReportDate = dateOut End Function 

不会被调用

 CurReport = GetReportName(sDept)