excel vba range.find 找不到日期

excel vba range.find not finding date

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

我遇到了一个错误,过去几个小时我一直在隔离问题并寻找解决方案,但无济于事。

我有一个电子表格,其中 column B 包含一系列按顺序排列的日期。我可以找到最短日期(消息框正确 returns 11/14/2015),但是当我尝试使用该日期值来识别行号时出现错误 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

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

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

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

另一个可能相关也可能不相关的细微差别是此数据存在于工作表上的指定范围内。我的 range.find 行有什么问题?!?

正如评论中所讨论的那样,当列的格式不是 Date.

时,问题就会出现

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

rDateColumn.NumberFormat = "m/d/yyyy"

这应该将列的格式设置为日期,并且您的 Find 方法应该可以正常工作。

或者,您可以 select 列,单击 'Format Cells',然后确保 'Date' 在类别下 select。