2013-07-12 85 views
0

我是普通的VBA用戶,無法弄清楚爲什麼我會收到錯誤。對象變量未設置錯誤

下面是代碼:

Set cell = AA.Sheets(sc).Columns("E").Find(Name, LookAt:=xlWhole) 
If Not cell Is Nothing Then 
    FirstAddress = cell.Address 
    Do 
     s = Application.WorksheetFunction.Match(AA.Sheets(av).Rows(3).Find(AA.Sheets(sc).Range("F" & cell.Row)), AA.Sheets(av).Range("A3:NC3"), 0) 
     p = Application.WorksheetFunction.Match(AA.Sheets(av).Rows(3).Find(AA.Sheets(sc).Range("G" & cell.Row)), AA.Sheets(av).Range("A3:NC3"), 0) 
     Set cell = AA.Sheets(sc).Columns("E").FindNext(cell) 
    Loop While cell.Address <> FirstAddress 'ERROR ON THIS LINE 
End If 
Set cell = Nothing 

我正在一個對象變量或帶塊變量未設置錯誤。在第一次跑低谷之後,即使應該再有兩次傳球,'單元'也會返回'沒有'。如果我刪除's ='和'p ='行,它會正確完成。我需要那些爲我正在做的事情。

我該如何解決這個問題?謝謝!

+1

該錯誤表示前一行的FindNext方法未找到任何匹配的單元格。如果沒有看到周圍的代碼並且沒有對工作表內容進行解釋,很難提供更多的幫助 –

+0

這是唯一與錯誤相關的代碼。以前沒有什麼會真正有所作爲。就像我在OP中所說的那樣,如果在錯誤發生之前刪除兩行代碼,它會找到所有三個實例。當我試圖讓'p'和's'出現錯誤時。 –

回答

0

您有此錯誤,因爲's'和'p'行使用Excel的'查找'對象。應用程序只有一個「查找」實例。你在第一行初始化它,然後使用「FindNext」。這隻有在你不使用中間的「查找」對象時纔有效。

+0

好的...這是有道理的。我會看看我是否可以在不使用Find函數的情況下調整代碼。謝謝! –

+1

請upvote /接受如果你確定。謝謝 –

+0

不能upvote(沒有足夠的代表),我只是用一個循環,而它的工作就像一個魅力! :) –

相關問題