2016-08-04 8 views
0

셀의 숫자 값이있는 행을 삭제하고 싶습니다. 다음 코드를 실행하면 IsEmpty 및 IsNumeric() 함수를 올바르게 평가하고 행을 삭제합니다. 그러나 그것은 어떤 이유에서 멈추고 3 번 시도한 후에 끝날 것입니다. 참고 : Cell.Value 및 Cell.Value2를 시도했습니다. 당신이 그 범위에 수식이없는 경우셀의 숫자 값이있는 행을 삭제하는 VBA 루프

For Each Cell In Range("H1:H600") 
    If Not IsEmpty(Cell) Then 
     If IsNumeric(Cell.Value) Then 
      Cell.EntireRow.Delete 
     End If 
    End If 
Next 
+1

아래에서 위로 이동을 삭제, 당신은 훨씬 더 일관성있는 결과를 얻을 수 있습니다. – sous2817

+1

그 이유는 행을 삭제할 때 다른 행이 충돌하기 때문입니다. 1을 삭제하면 i를 'i = i-1'로 줄입니다. –

+1

역순으로 반복해야합니다. 그렇지 않으면 줄을 건너 뜁니다. 세 가지 옵션을 보려면 여기를 참조하십시오. http://stackoverflow.com/questions/33744149/code-in-vba-loops-and-never-ends-how-to-fix-this –

답변

1

:

Range("H1:H600").SpecialCells(xlCellTypeConstants, xlNumbers).EntireRow.Delete 
+0

나는 같은 생각을하고 있었지만 그의 숫자 중 일부는 텍스트로 저장 될 수도 있습니다. – Slai

+0

그러면 숫자도 삭제됩니다. 텍스트로 서식이 지정되었습니다. –

+0

늦은 답신에 사과드립니다. 이것은 효과가 있었고 분명히 내가 가진 것보다 훨씬 빠릅니다. 감사 – user2336288

관련 문제