Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将函数转换为子例程excel vba_Excel_Vba - Fatal编程技术网

将函数转换为子例程excel vba

将函数转换为子例程excel vba,excel,vba,Excel,Vba,我有一个如下的函数。我需要把它转换成一个子程序。或者有没有办法从子程序内部调用这个函数 'function to calculate nth specific last day of a month like last saturday or last monday Function LastDayOfMonth(Which_Day As String, Which_Date As String) As Date Dim i As Integer Dim iDay A

我有一个如下的函数。我需要把它转换成一个子程序。或者有没有办法从子程序内部调用这个函数

'function to calculate nth specific last day of a month like  last saturday or last monday   

Function LastDayOfMonth(Which_Day As String, Which_Date As String) As Date

    Dim i As Integer
    Dim iDay As Integer
    Dim iDaysInMonth As Integer
    Dim FullDateNew As Date

    Which_Date = CDate(Which_Date)

    Select Case UCase(Which_Day)
        Case "SUN"
            iDay = 1
        Case "MON"
            iDay = 2
        Case "TUE"
            iDay = 3
        Case "WED"
            iDay = 4
        Case "THU"
            iDay = 5
        Case "FRI"
            iDay = 6
        Case "SAT"
            iDay = 7
    End Select

    iDaysInMonth = Day(DateAdd("d", -1,DateSerial(Year(Which_Date),Month(Which_Date)+ 1, 1))) 
    FullDateNew = DateSerial(Year(Which_Date), Month(Which_Date), iDaysInMonth)

    For i = 0 To iDaysInMonth
        If Weekday(FullDateNew - i) = iDay Then
           LastDayOfMonth = FullDateNew - i
          Exit For
       End If
    Next i
End Function

你可以用“Sub”来代替“Function”,但我觉得你的问题还有很多……是的,你可以用两种方式来做。但是把它作为一个函数,并把它作为一个子程序调用会很好。在子例程中,只需说
Ret=LastDayOfMonth(param1,parm2)
谢谢Siddharth..它工作了..+1耶!这次我赢了你:p
sub callit()
    Dim d as Date
    d = LastDayOfMonth(...)
end sub