Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel vba范围。查找未找到日期_Excel_Date_Find_Runtime Error_Vba - Fatal编程技术网

excel vba范围。查找未找到日期

excel vba范围。查找未找到日期,excel,date,find,runtime-error,vba,Excel,Date,Find,Runtime Error,Vba,我试图建立最小日期及其相关行,以便稍后在子例程中使用 我遇到了一个错误,在过去的几个小时里,我一直在隔离这个问题,寻找解决方案,但都没有用 我有一个电子表格,其中列B包含一系列按顺序排列的日期。我可以找到最短日期(消息框正确返回2015年11月14日),但当我尝试使用该日期值标识行号时,我得到错误91。这是我的密码: Sub testing() ThisWorkbook.Worksheets("Burn Curve Data").Activate Dim rDateC

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

我遇到了一个错误,在过去的几个小时里,我一直在隔离这个问题,寻找解决方案,但都没有用

我有一个电子表格,其中
列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
我尝试在
Set rMinCell
之后插入
If Not
语句,并确定
range.find
没有找到日期。这是我用来识别错误的声明,但是我删除了它来清理这个帖子的代码

    If Not rMinCell is Nothing Then
        intMinRow = rMinCell.Row
    Else
        MsgBox "error finding rMinCell"
    End If
我还尝试将
dMinDate
重新保存到一个字符串中,然后在
范围内使用该字符串。find
,但我遇到了相同的错误,即找不到日期


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

如评论中所述,当列的格式不是
Date
时,似乎会出现问题

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

rDateColumn.NumberFormat = "m/d/yyyy"
这应该将列格式化为日期,并且您的
Find
方法应该可以正常工作


或者,您可以选择列,单击“设置单元格格式”,然后确保在类别下选择“日期”。

如果日期是按顺序排列的,为什么还要费事查找最小值并搜索它呢?如果您知道日期的顺序,只需选取范围内的第一个或最后一个单元格,这取决于它的排序方式。在
列B
中,有包含这些日期上方和下方其他信息的单元格。我还将使用
dMinDate
作为userform中的默认值。当用户希望更改此日期范围的开始日期和结束日期时,将使用此表单。不能指望这里的人正确地复制/插入包含公式的新行。没问题。B列中的日期是否正确格式化为日期(右键单击-->格式化单元格并确保在类别下选择了“日期”?我做了一个快速测试,如果格式不是一个日期,我会得到你得到的错误91。设置变量并查看是否有帮助后,您可以添加代码
rDateColumn.NumberFormat=“m/d/yyyy”
。如果您得到的是错误91而不是错误处理程序提供的消息。。。这意味着您实际上正在输入'If Not rMinCell is Nothing Then intMinRow=rMinCell.Row`?我的假设正确吗?啊啊啊啊啊啊啊啊啊啊!!!你是对的。