错误在Excel列表中查找多个date范围

获取对象variables或variables未设置错误。 所有我想要做的是定位自己能够分析从newStartDate到newEndDate的数据,并将其与oldStartDate和oldEndDate之间的数据进行比较。 在“主列表”finddate的地址时感到困惑不确定为什么我在这个问题上挣扎这是一个简单的任务,但我似乎无法解决这个错误。 有什么想法吗? 我已经阅读了类似这个其他职位,似乎无法弄清楚我在做什么不同。 在此先感谢代码如下:

注意:1/1/14是在newStartDate范围内设置的date。 这个date并不存在,因为直到第二天才开展业务。 我在一个post中发现,如果没有find确切的date,底部的“Set newStartDateFinder”行会find下一个最接近的date..我开始认为情况并非如此,因为当我尝试运行debugging器它似乎是空的。

Option Explicit Sub Gather_Calculate_Performance() 'Variable declaration Dim EBM As Workbook Dim masterList, controlOut As Worksheet Dim newStartDate As Range Dim newEndDate As Range Dim oldStartDate As Range Dim oldEndDate As Range Dim newStartDateFinder As Range Dim newEndDateFinder As Range Dim oldStartDateFinder As Range Dim oldEndDateFinder As Range 'Setting main objects Set EBM = Workbooks("Monthly Analysis (DEV)") Set masterList = EBM.Sheets("Master List") Set controlOut = EBM.Sheets("Control.Output") 'setting main variables Set newStartDate = controlOut.Range("B" & 5) Set newEndDate = controlOut.Range("B" & 6) Set oldStartDate = controlOut.Range("D" & 5) Set oldEndDate = controlOut.Range("D" & 6) 'Find addresses for dates Set newStartDateFinder = masterList.Range("A:A").Find(newStartDate, LookIn:=xlValues, LookAt:=xlWhole) Debug.Print newStartDateFinder.Address End Sub 

是的,如果将LookAt参数设置为xlWhole ,则Find函数将查找完全匹配。 (将其设置为xlPart会在部分单元格中findsearchstring所在的匹配项,所以Find函数将不会按照您怀疑的方式工作。

我以为你可以使用VLOOKUPMATCH函数来findnewStartDate的下一个最接近的date,但经过testing,它没有按照我认为的方式工作。

但是,这个循环,而工作。 如果我find更有效的方法,我会更新答案。

 'Find addresses for dates Dim i as Integer i = 0 Do Set newStartDateFinder = masterList.Range("A:A").Find(newStartDate.Value +i, LookIn:=xlValues, LookAt:=xlWhole) i = i + 1 Loop Until Not newStartDateFinder is Nothing Debug.Print newStartDateFinder.Address