2011-05-26 93 views
3

出於某種原因,下面的代碼在運行時錯誤「1004」中聲明對象'_Application'失敗「的方法'相交'的第二行失敗,並且在某些情況下,試圖修改它產生'_Global'失敗的代碼。奇怪的是,我玩過各種版本的代碼,有時在調試模式下進行了很多更改之後,我重試了這個表單然後運行。如果我然後嘗試重新運行代碼,它會再次失敗。VBA循環遍歷單元格範圍失敗


RNG1是一組從同一列的細胞,RNG2是RNG1

例如一組小區在具有相同的行多個列的rng1 = {A2:A10}, rng2 = {D2:H10}

指令將rng2中的單個條目相對於rng1中的單個條目的單元格值保存到數組中。我已檢查範圍是在同一張紙上,有效和(其中named)引用了正確的單元格。

For Each c In Range("rng1").Cells 

     For Each d In Application.Intersect(Rows(c.Row), Range("rng2")).Cells 

      *some instructions here* 

     Next d 

Next c 

回答

6

試試這個,而不是你的代碼對我造成的錯誤是當交叉點結束爲空。

Dim c As Range, d As Range 
Dim rng As Range 

For Each c In Range("test1") 
    Set rng = Application.Intersect(Rows(c.Row), Range("test2")) 
    If rng Is Nothing Then 
     '' Empty intersection '' 
     Debug.Print "Empty" 
    Else 
     For Each d In rng 
      '' some instructions here '' 
      Debug.Print d.Address 
     Next d 
    End If 
Next c 

當然你應該也前綴您RangeRows與板材,如:

Sheet1.Rows 

Sheet1.Range("test1") 

諸如此類......

+2

關於評論在關於運行它的問題和它的工作,然後重新運行它,它不,我想你最後的評論是關於標記的。如果您在運行時選擇了不同的工作表,它將無法工作。 – Vicky 2011-05-26 14:48:51

+2

我認爲這可能是問題......請記住人們:始終完全符合所有條件! '範圍(...)'是**邪惡** – 2011-05-26 19:11:35

+0

@kaben這是否解決了您的問題? – 2011-05-28 15:24:57