現在 for ループで、VBA の範囲を反復処理しています。特定の基準を満たしたときに範囲から値を削除する if ステートメントがありますが、これを行うと範囲内の次の値がスキップされます。
Java で配列とイテレータを使用してこれを回避できることはわかっていますが、VBA にはこのようなものがありますか?
行を削除するときは逆方向に反復する必要があるため、for
代わりにループを使用する必要がありますfor each
範囲内の最後の行に設定i
してから追加step -1
して、ループがデクリメントするようにしますi
正常for each
に動作しないサンプル
dim cell as Range
for each cell in Range("A1:A100")
if isEmpty(cell) then cell.delete shift:=xlUp
next
For
行が空の場合に行を削除する置換ループ
dim i as long, lastRow as Long, firstRow as Long
lastRow = 100: firstRow = 1
dim cell as Range
for i = lastRow to firstRow step -1
Set cell = Range("A" & i)
if isEmpty(cell) then cell.Delete shift:=xlUp
Set cell = Nothing
next i