2011-03-29 43 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