2016-01-06 55 views
0

獲取對象變量或變量未設置錯誤。我所要做的就是定位自己,以便能夠將數據從newStartDate分析到newEndDate,並將其與oldStartDate和oldEndDate之間的數據進行比較。停留在「主列表」中查找日期的地址不確定爲什麼我正在爲此掙扎這是一個簡單的任務,但我似乎無法解決錯誤。有什麼想法嗎?我已閱讀其他類似的帖子,似乎無法弄清楚我在做什麼不同。提前致謝代碼如下:錯誤在Excel列表中找到多個日期範圍

注意:1/1/14是在newStartDate範圍內設置的日期。這個日期並不存在,因爲直到第二天才開展業務。我在帖子中發現,如果沒有找到確切的日期,底部的「Set newStartDateFinder」行會找到下一個最接近的日期..我開始認爲情況並非如此,因爲當我嘗試運行調試器它似乎是空的。

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 
+0

嘗試更改'...在第二個la中查找(newStartDate,...' st line to'... Find(newStartDate.Value,...' – PankajR

+0

@PankajR仍然空着,但我認爲問題存在於事實上,即1/1/2014不存在,但它應該找到而不是1/2/2014。不要認爲這是正確的代碼來做到這一點? – StormsEdge

+0

是的,這是@StormsEdge的問題。你的日期是按順序排列的嗎? –

回答

1

是的,Find功能會尋找一個確切的匹配,如果你的LookAt參數設置爲xlWhole。 (將其設置爲xlPart會發現在搜索字符串中的細胞的存在部分匹配。因此,Find功能將不會在這裏你懷疑的方式工作。

我想你可以使用一個VLOOKUPMATCH功能尋找下一個最接近的日期到newStartDate但經過測試,它沒有工作,我以爲它會的方式。

然而,這個循環而工作,如果我找到一個更有效的方式,我會更新的答案。

'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 
+0

不幸的是我不認爲我可以利用這種方法。我試圖分析的數據集有近100K行。爲了循環瀏覽那些尋找約會的每一個人,只會凍結我的excel,我必須爲每個人都做到這一點。感謝您的努力,儘管我非常感謝。 – StormsEdge

+0

你並沒有遍歷每一行......你正在檢查A列中的newStartDate,並在每次找不到它時增加一天。據推測,它不應該花太多的循環來找到第一個*實際*開始日期。也許還有更多關於你的情況我不明白。 –

+0

是否有可能因爲日期初始化爲範圍而非日期? – StormsEdge