我正在尝试建立最小日期及其相关行,以便以后在子例程中使用。
我遇到了一个错误,我花了最后几个小时来隔离问题并搜索解决方案无济于事。
我有一个电子表格,其中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
行出了什么问题?!?
答案 0 :(得分:1)
正如评论中所讨论的那样,当列格式化为Date
以外的其他内容时,会出现问题。
要通过代码执行此操作,您可以在设置rDateColumn
变量后添加此行:
rDateColumn.NumberFormat = "m/d/yyyy"
这应该将列格式化为日期,并且Find
方法应该正常工作。
或者,您可以选择列,点击'格式化单元格'然后确保日期'在类别下选择。