2016-03-30 14 views
0

私はかなり基本的だと思うことに問題があります。誰かが助けてくれますか?各変数の調整

For Eachループ内の「セル」の値を調整するにはどうすればよいですか?私は行を削除するので、私の "セル"カウンタがスローされ、1つが削除されるたびに行がスキップされます。

私はカウンターを調整することによって、それを修正することができると思いますが、交換する必要があります:セットセル=セル - 1

For Each row In pipelineRange.Rows 
    For Each cell In row.Cells 
    If cell.Value = "EXIT" Then 
     cell.EntireRow.Copy Destination:=Worksheets("EXITS").Range("A" & Sheets("EXITS").Range("B" & Rows.Count).End(xlUp).row + 1) 
     Sheets("PIPELINE TRACKER").Activate 
     cell.EntireRow.Delete 
     Set cell = cell - 1 
    ElseIf cell.Value = 1 Then 
     cell.EntireRow.Copy Destination:=Worksheets("COMPLETED").Range("A" & Sheets("COMPLETED").Range("B" & Rows.Count).End(xlUp).row + 1) 
     Sheets("PIPELINE TRACKER").Activate 
     cell.EntireRow.Delete 
     Set cell = cell - 1 
    End If 
Next cell 
Next row 

答えて

1

常にこれを避けるために、後方に行く削除するとき。例えば:私たちは、その後マイナス1、我々は範囲の最終行を取得しますそれらを一緒に追加した場合我々はまた、ここにpipelineRange.Rows.Count範囲内の行数を知っているpipelineRange.Row

For X = Range("A" & Rows.count).end(xlup).row to 2 step -1 
    If Range("A" & X).Text = "Delete Me" then rows(X).delete 
Next 

ここでは範囲の最初の行を知っています

おそらく

Sub Something() 
Dim X As Long 
For X = pipelineRange.Row + pipelineRange.Rows.Count - 1 To pipelineRange.Row Step -1 
    For Each cell In Rows(X).Cells 
     If cell.Value = "EXIT" Then 
      cell.EntireRow.Copy Destination:=Worksheets("EXITS").Range("A" & Sheets("EXITS").Range("B" & Rows.Count).End(xlUp).Row + 1) 
      Sheets("PIPELINE TRACKER").Activate 
      cell.EntireRow.Delete 'You could change this for rows(X).delete if you like 
     ElseIf cell.Value = 1 Then 
      cell.EntireRow.Copy Destination:=Worksheets("COMPLETED").Range("A" & Sheets("COMPLETED").Range("B" & Rows.Count).End(xlUp).Row + 1) 
      Sheets("PIPELINE TRACKER").Activate 
      cell.EntireRow.Delete 'You could change this for rows(X).delete if you like 
     End If 
    Next 
Next 
End Sub 
このような何か