isEmpty()总是返回false

时间:2014-03-03 21:58:30

标签: excel vba excel-vba

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

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

然后,在我的函数内部:

msg = MsgBox(IsEmpty(month), vbOKOnly)所以我知道这个月是否已输入该功能。

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

如果我在致电getYear(currentYear) isEmpty()时应该正确理解这一点,则应该返回True,但不是...... {/ p>

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

感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

来自MSDN:

IsEmpty only returns meaningful information for variants

您还可以使用IsMissing()来检查是否将可选参数传递给函数,但这也适用于变量。您可能想要检查可选参数的值是否等于其默认值,即日期为零。

答案 1 :(得分:0)

您可以为“月”创建一个默认值,该值为零或负数,或超出可能的条目范围。然后,您可以只测试该默认值,而不是使用IsMissing或IsEmpty。如果month =默认值,则表示该参数未传递给函数。