繁体   English   中英

Excel VBA For 循环与 UsedRange 计数错误

[英]Excel VBA For loop with UsedRange Count Error

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 为空。

谢谢

你没有回答我的问题,我准备了一个答案,假设必要的代码必须用它们的右邻居 (F:G) 替换 D:E 中的单元格,并在这样的处理范围之后插入一行。 如果这个假设是正确的,请测试下一个代码:

Sub testDeleteRangeInsertRow()
 Dim ws As Worksheet, n As Long
 
 Set ws = ActiveSheet

   n = 2
    Do While Not IsEmpty(ws.Range("D" & n).value)
    
       ws.Range("D" & n & ":" & "E" & n).Delete Shift:=xlShiftToLeft
       Rows(n + 1).Insert Shift:=xlShiftDown
       n = n + 2
    Loop
End Sub

如果我的假设是错误的,请更好地解释(用文字......)你需要完成什么......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM