VBA基础知识 - 从子系统调用函数

时间:2018-02-04 22:44:59

标签: excel vba excel-vba

我想编写一个函数宏来计算两个日期之间的天数。看起来我有这个。

Function daysRem(today As Date, eoc As Date) As Integer
    daysRem = Abs(DateDiff("d", today, eoc))
End Function

现在,我需要从Sub中“调用”该功能,以粗略估计剩余的周数。我希望它在一个消息框中。这就是我遇到大约两个小时的挫败感的地方。这必须简单,但我无法弄清楚要做什么。

2 个答案:

答案 0 :(得分:0)

试试这个:

Private Sub DisplayDaysDiff()
 Dim dtDate1 as Date
 Dim dtDate2 as Date

 dtDate1 =ThisWorkbook.Worksheets("Sheet1").Range("A2")
 dtDate2=ThisWorkbook.Worksheets("Sheet1").Range("B2")

 MsgBox "Days difference: " & CStr(daysRem(dtDate1, dtDate2)), vbInformation

End Sub

从button_click事件中调用它

答案 1 :(得分:-3)

Sub Main
    x = MyFunction(Param1)
End Sub

MyFunction(MyDate as Date)
    MyFunction = DateDiff("ww", Date(), MyDate)
End Function

您可以将值分配给函数名称。内置的Date()函数是今天的日期。

函数返回一些东西。没有。宏是SUBS。

函数返回一些东西。

所以

Function Test
    Test = 5
End Function

Sub Main
    x = Test() + 5
End Sub

所以 x = 10

Sub Main
    Param1 = #2/2/2017#  
    Range("B4").Value = MyFunction(Param1)
End Sub

MyFunction(MyDate as Date)
    MyFunction = DateDiff("ww", Date(), MyDate)
End Function

日期既是数据类型又是函数。一个人没有括号,一个人没有。