IsNumeric / IsError返回一个错误

我对VBA很陌生,正在开发一个自定义函数(将来会用到更复杂的目的 – 这就是我想用VBA来代替标准公式的原因),它的任务应该是获得来自单元格的date并在列(例如列A)中指定其位置(ia行号)。

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

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

当然,它运作良好。 然而,问题是,可能发生input函数的date不在范围内。 在这种情况下,函数应该在该date之前search最近input的date。 在这个范围内,date总是按时间顺序排列,我计划构build一个错误检查公式(作为一个条件)和适当的循环。

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

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

这一切都很好(如果在列A中find单元格C23的date,则公式返回TRUE,如果未finddate,则返回FALSE)。 但是如果试图把这个公式改写成VBA程序,ia:

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

自定义函数返回#VALUE! 如果未finddate,则返回错误(如果不是,则返回FALSE)。
下面我附上我描述的快照。

你有什么想法我该怎么办? 提前致谢。

我不知道背后的原因,但这个工程:

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

从逻辑上说,它应该像WorksheetFunction.Match一样WorksheetFunction.Match并可以通过IsError以同样的方式进行评估,但是我已经尝试过了,并且得到了和您一样的结果。