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

그냥 i've "다음 다시 시작 오류에"와 오류를 무시할 수 관리 말을하지만,이 기능을 사용하지 않을 내가 좋아하는 것 : 예를 들어, 당신은 Cells(4, 20) 변경에만 관심이 있었다, 경우에 당신은 할 수 . – RMAMDF

답변

0

나는 귀하의 Worksheet_Change 이벤트 처리기가 의도하지 않게 자신을 호출하고 이것이 문제의 원인 일 수 있다고 생각합니다. 도시 Worksheet_Change 이벤트 핸들러 Sheet1 적용되는 경우 Sheet1 대한 Worksheet_Change 이벤트 핸들러가 다시 등이라고 Cells(g, 21)의 값을 변경할 때

는 예를 들어 다음 (Cells(4, 20).Value 등에 따라서 비정규 참조도 Sheet1 참조).

이 문제를 방지하려면 이벤트 처리기의 Target 매개 변수를 사용해야합니다.

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