2013-07-30 3 views
2

내 매크로에 문제가 있습니다. 그것은 특정 기준을 fullfil 행을 삭제합니다. 그러나 연속적인 행이 거의 없으면 오류가 발생합니다. 행이 삭제되면 다른 행이 위로 이동하여 행 (2 : 2) 및 행 (3 : 3)이 기준을 충족 시키면 행 (2 : 2)이 삭제되고 행 (3 : 3)이 위로 이동합니다 , 따라서 행 (2 : 2)이되고 For 루프는 다른 행 (세 번째 행)으로 이동합니다. 결과적으로 행 (3 : 3)이고 지금은 행 (2 : 2) 인 행은 생략되고 삭제되지 않습니다.
이 주제를 다루기 위해서 For 루프로 바꾸는 것만으로도 충분하다고 생각합니다. 그래서 위로부터 아래로가 아니라 아래에서 위로갑니다. 일부는 행을 이중으로 검사하지만 행은 생략되지 않습니다.
Proble은 For 루프를 revese하는 방법을 모른다. 나는 'For x = startrow for endrow'를 'for x = endrow to startrow'로 변경하려했지만 도움이되지 않았다. 당신이 반복하고 행을 삭제하는 경우, 당신은에서 시작해야For 루프를 뒤집는 방법

Sub Repurchase_upload() 

Dim Worksheet As Worksheets 
startrow = Worksheets("GUTS").Cells(10, 1) 
endrow = Worksheets("GUTS").Cells(11, 1) 

For x = startrow To endrow 'I have tried to change this line into: 'For x = endrow To startrow', but it didn' help 
      If Cells(x, "A").Value <> "AA" And Cells(x, "A").Value <> "AB" And Cells(x, "A").Value <> "AC" And Cells(x, "A").Value <> "AD" And Cells(x, "A").Value <> "AE" And  Cells(x, "A").Value <> "AH" And Cells(x, "A").Value <> "AI" And Cells(x, "A").Value <> "AF" And Cells(x, "A").Value <> "AG" Then 
      Cells(x, "A").EntireRow.Delete 

      End If 



    Next 
End Sub 

은 사전에 모든 많은 감사, 안부와
,
아르투르 Rutkowski

답변

10

:
여기에 코드입니다 하단 및 작업 :

For x = endrow To startrow step -1 

그런 다음 행을 삭제해도 루프가 중단되지 않습니다.

+0

이 도와 주셔서 많이 감사합니다! 이거 야. :) –

+0

기꺼이 도와 줘, Artur. – dendarii

0

또 다른 대안은 각 삭제 후에 x = x-1을 넣는 것입니다. 그러나 아래에서 위로 작업하는 것이 좋습니다. 앞으로

0

루프 :

For i = 1 To 10 
    //Do something 
Next i 

루프 뒤쪽으로 (for 루프의 끝에서 Step -1을 사용) :

For i = 10 To 1 Step -1 
    //Do something 
Next i