マクロに問題があります。特定の基準を満たす行を削除します。ただし、これらの基準を満たす連続した行がほとんどない場合、エラーが発生します。行が削除されると、他の行が上にシフトされるため、行 (2:2) と行 (3:3) が基準を満たす場合、行 (2:2) が削除され、行 (3:3) が上にシフトされます。なので、row(2:2) になり、For ループは別の行 (3 番目の行) に移動します。その結果、以前はrow(3:3)で現在はrow(2:2)になっている行は削除されず、削除されません。
この話題を扱うには、For ループに逆行すればよいと思いますので、上から下ではなく、下から上になります。その結果、一部の行が二重にチェックされますが、行が省略されることはありません。
問題は、For ループを修正する方法がわからないことです。「For x = startrow To endrow」を「For x = endrow To startrow」に変更しようとしましたが、役に立ちませんでした。
コードは次のとおりです。
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
よろしくお願いします
。
Artur Rutkowski