簡體   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