IsNumeric / IsError返回错误

时间:2015-04-24 21:46:41

标签: excel vba excel-vba

我对VBA很新,并且正在开发一个自定义函数(将来会用于更复杂的目的 - 这就是我想使用VBA而不是标准公式来实现这一目的的原因)从单元格中获取日期并在列中指定其位置(ia行号)(例如,列A)。

我通过以下程序解决了这个简单的任务:

Function TempRowNumber(OrgDate)
    TempRowNumber = WorksheetFunction.Match(OrgDate, Range("A:A"), 0)
End Function

当然,它运作良好。但问题是,输入功能的日期可能不包括在范围内。在这种情况下,该函数应在该日期之前搜索最新输入的日期。在此范围内,日期始终按时间顺序排序,我计划构建错误检查公式(作为条件)和适当的循环。

问题是,如果我写这样的公式:

=ISERROR(MATCH(C23;A:A;0))

一切都很好(如果在A列中找到来自单元格C23的日期,则公式返回TRUE,如果未找到日期,则公式返回FALSE)。但是如果尝试将这个公式重写为VBA程序,i.a。:

Function FindDate(OrgDate)

FindDate = IsError(WorksheetFunction.Match(OrgDate, Range("A:A"), 0))

End Function
如果找不到日期,

自定义函数会返回#VALUE!错误(如果没有,则返回FALSE)。
下面我附上我所描述内容的快照。

你知道我该怎么办?提前谢谢。

1 个答案:

答案 0 :(得分:2)

我不知道背后的原因,但这有效:

Function FindDate(Orgdate)
    FindDate = IsError(Application.Match(Orgdate, Range("A:A"), 0))
End Function

逻辑上它应该与WorksheetFunction.Match的工作方式相同,并且可以IsError以相同的方式进行评估,但我已经尝试过,而且我得到的结果与您的结果相同。