excel vba range.find找不到日期

时间:2015-08-17 15:24:56

标签: excel-vba date find runtime-error vba

我正在尝试建立最小日期及其相关行,以便以后在子例程中使用。

我遇到了一个错误,我花了最后几个小时来隔离问题并搜索解决方案无济于事。

我有一个电子表格,其中column B包含按顺序排列的日期范围。我可以找到最小日期(消息框正确返回2015年11月14日),但是当我尝试使用该日期值来识别行号时,我得到错误91.这是我的代码:

    Sub testing()

    ThisWorkbook.Worksheets("Burn Curve Data").Activate

    Dim rDateColumn As Range
    Dim dMinDate As Date
        Set rDateColumn = ActiveSheet.Range("B:B")
        dMinDate = Application.WorksheetFunction.Min(rDateColumn)

    MsgBox dMinDate

    Dim rMinCell As Range
    Dim intMinRow As Integer
        Set rMinCell = rDateColumn.Find(dMinDate, LookIn:=xlValues, LookAt:=xlWhole)
        intMinRow = rMinCell.Row

    MsgBox intMinRow

    End Sub

我尝试在If Not之后插入Set rMinCell语句,并确定range.find未找到日期。这是我用来识别错误的语句,但是我将其删除以清理此帖子的代码。

    If Not rMinCell is Nothing Then
        intMinRow = rMinCell.Row
    Else
        MsgBox "error finding rMinCell"
    End If

我还尝试将dMinDate重新保存到字符串中,然后在range.find中使用该字符串,但是我遇到了找不到日期的相同错误。

可能相关或不相关的另一个细微差别是此数据存在于工作表的命名范围内。我的range.find行出了什么问题?!?

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的那样,当列格式化为Date以外的其他内容时,会出现问题。

要通过代码执行此操作,您可以在设置rDateColumn变量后添加此行:

rDateColumn.NumberFormat = "m/d/yyyy"

这应该将列格式化为日期,并且Find方法应该正常工作。

或者,您可以选择列,点击'格式化单元格'然后确保日期'在类别下选择。