isEmpty()总是返回false

我有一个名为getYear的VBA函数,它的初始化如下:

Public Function getYear(ByVal year As Date, Optional ByVal month As Date) As Long

那么,在函数里面我有:

msg = MsgBox(IsEmpty(month), vbOKOnly)所以我知道这个月是否已经在函数中input了。

唯一的是我是否有一个函数调用,如: getYear(currentYear)getYear(currentYear, currentMonth) isEmpty总是返回False

如果我正确的理解,当我调用getYear(currentYear) isEmpty()应该返回True ,但它不是…

我收集的是从我的函数初始化,但我不知道还有什么要做。

任何帮助表示赞赏!

来自MSDN:

 IsEmpty only returns meaningful information for variants 

你也可以使用IsMissing()来检查一个可选的参数是否被传递给函数,但是这个函数也只能在Variant上运行。 您可能需要检查可选参数的值是否等于其默认值(date为零)。

您可以为“月”创build一个默认值,该值为零或负数,或超出可能条目的范围。 然后,而不是使用IsMissing或IsEmpty,您可以testing该默认值。 如果月=默认,你知道参数没有传递给函数。