Excel VBA - 子或函数未定义错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10398310/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Excel VBA - Sub or Function not defined Error
提问by JasonR
I'm getting a compile error on this method and I can't figure out why. I'm getting the "Sub or Function not define" error. Its probably something silly, but escaping me nontheless. Thanks in advance.
我在此方法上遇到编译错误,我不知道为什么。我收到“子或函数未定义”错误。它可能有些愚蠢,但仍然逃脱了我。提前致谢。
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
When i call the method this is what I'm using.
当我调用该方法时,这就是我正在使用的方法。
CurReport = GetReportName(sDept)
回答by Andrew Leach
There's a mismatch between what you are calling and the function you have defined. Date
and Name
are not the same.
您正在调用的内容与您定义的函数之间存在不匹配。Date
并且Name
不一样。
Public Function GetReportDate(dept As String) As String
GetReportDate = dateOut
End Function
is not going to be called by
不会被调用
CurReport = GetReportName(sDept)