約1000行を含む範囲の行を削除するサブルーチンがあります。 行はcriteraで削除されます。 以下のコードは動作します。Excel VBAは、forループの行を削除する行を逃します。
しかし、マクロを実行すると、通常は削除基準を含むすべての行が削除される前に4回実行する必要があります。
これは、行を削除するときに行が突然消えてしまったときにforループがインデックスを見落としているためです。
私の最初のコードはこのように見えます。
Set StatusRange = Range("B2", Range("B2").End(xlDown))
For Each StatusCell In StatusRange
If StatusCell = "FG" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "QC" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "CS" Then
StatusCell.EntireRow.Delete
Else
End If
Next StatusCell
各ループの範囲を更新しようとすると、まだ動作しません。
Set StatusRange = Range("B2", Range("B2").End(xlDown))
For Each StatusCell In StatusRange
If StatusCell = "FG" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "QC" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "CS" Then
StatusCell.EntireRow.Delete
Else
End If
Set StatusRange = Range("B2", Range("B2").End(xlDown))
Next StatusCell
これにsloutionを知っている人はいますか?ありがとう。
作業tehのボトムアップから。あなたが行を削除すると、すべてが上に移動し、上の行をスキップyuou次の繰り返しです – Jeeped
これはほぼ確実に重複した質問ですが、適切な重複が見つかったらそれをマークします。コレクションからアイテムを削除するときは、必ずRows.Countから1ステップ-1を削除する必要があります –
この@DavidZemensを欺く - 複数の比較のためにCaseステートメントを表示することによっていくつかの価値を追加しましたが、これは依然として欺瞞です。 – Jeeped