2012-05-01 36 views
1

このメソッドでコンパイルエラーが発生しましたが、その理由がわかりません。私は、 "SubまたはFunction not定義"エラーを取得しています。おそらく何か愚かなことですが、それでも私を逃れてしまいます。 ありがとうございます。Excel VBA - サブ関数または関数が定義されていないエラー

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) 
+0

くそによって呼び出されることするつもりはありません!私は間違った機能を呼んでいるばかげている...それは私がそれをすることを言っていることをやっている。 – JasonR

答えて

2

あなたが呼び出しているものと定義した機能との間に不一致があります。 DateNameは同じではありません。

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

CurReport = GetReportName(sDept) 
+0

ありがとう、私はちょうど同じことに気づいた。それをすべて変更しました。 – JasonR

関連する問題