2011-03-29 44 views
0

我正在寫一個代碼,但我得到-2147417848(80010108)錯誤。我知道這是每次它「獲得」一個空單元,但我不知道如何解決它,有人可以幫助我嗎?這裏的代碼錯誤80010108與自動填充

Dim i, g As Integer 

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    g = 12 

    For i = 3 To 5000 

     If Worksheets("Registo_EPI´s").Cells(i, 1).Value = Cells(4, 20).Value Then 
      Cells(g, 21).Value = Worksheets("Registo_EPI´s").Cells(i, 5).Value 
      g = g + 1 
     End If 

    Next i 

End Sub 

當範圍內的單元格(i,5)爲空時,代碼崩潰。例如,如果在單元格(3,5)我有一個數字或日期,如果在單元格(4,5)我沒有任何東西,它的崩潰。希望你能幫助我。謝謝

+0

只是說從來就設法繞過與錯誤「上的錯誤繼續下一步」,但我想不使用此。 – RMAMDF 2011-03-29 10:43:34

回答

0

我認爲這很可能是你的Worksheet_Change事件處理程序無意中調用自己,這可能是你的問題的根源。

例如,如果顯示的Worksheet_Change事件處理程序適用於Sheet1當你改變的Cells(g, 21)Sheet1Worksheet_Change事件處理程序再等等所謂的價值(從而相似Cells(4, 20).Value不合格的引用也指Sheet1)即可。

您應該使用事件處理函數的Target參數來防止出現這種情況。如果,例如,你只有在改變Cells(4, 20)感興趣,那麼你可以有:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If (Target.Address(ReferenceStyle:=xlR1C1) = "R4C20") Then 
     g = 12 

     For i = 3 To 5000 

      If Worksheets("Registo_EPI´s").Cells(i, 1).Value = Cells(4, 20).Value Then 
       Cells(g, 21).Value = Worksheets("Registo_EPI´s").Cells(i, 5).Value 
       g = g + 1 
      End If 

     Next i 
    End If 
End Sub 
+0

謝謝你的幫助! – RMAMDF 2011-03-30 10:57:01