【发布时间】:2020-08-26 07:45:31
【问题描述】:
maxRow = ws.UsedRange.EntireRow.Count
For n = 1 To maxRow
Do While Not IsEmpty(ws.Range("D" & n).Value)
ws.Range("D" & n & ":" & "E" & n).Delete shift:=xlShiftToLeft
Rows(n + 1).Insert shift:=xlShiftDown
maxRow = maxRow + 1
Loop
Next n
我只是想知道为什么我的代码总是在 n = 19(原始 maxRow 计数)时退出。我添加了 maxRow = maxRow +1,因为我插入了一行,这样它在完成之前不会退出。
我要做的是删除两个单元格 (D&E) 并在下面插入一行,直到 D&E 为空。
谢谢
【问题讨论】:
-
向后删除或插入循环时。此外,您不应该同时需要 For-Next 和 Do-While 循环。
-
因此,所需的结果将是删除 D:E 单元格(替换为右侧的单元格)和每个这样处理的行下方的空行。这种理解正确吗?
标签: excel vba for-loop iteration