2017-07-25 163 views
-1

這似乎是一個簡單的問題,但無論我更改或編輯,我似乎無法以邏輯方式解決此問題。無限循環excel VBA

我想要做的是循環遍歷範圍內的每個單元格,將循環中當前單元格的內容與它上面的單元格進行比較。如果這兩個單元格值不相同,那麼我插入2個新行。

但是,不是插入2個新的空白行,而是將行的內容取爲rangeCell,並插入相應的內容。因此,它會陷入無限循環,因爲我們檢查的單元之上的單元總是等於當前的單元值。這是爲什麼發生?

下面是代碼:

For Each rep In repNames() 

    If rep <> vbNullString Then 

    Worksheets(rep).Activate 
    Set repComboRange = Range("A2", Range("A2").End(xlDown)) 

     For Each rangeCell In repComboRange 

      If rangeCell.Value <> rangeCell.Offset(-1, 0).Value And rangeCell.Offset(-1, 0).Value <> vbNullString Then 

      rangeCell.EntireRow.Insert 
      rangeCell.EntireRow.Insert 

      End If 

     Next rangeCell 

    Else: Exit For 

    End If 


Next rep 

的具體問題是在這一行:

  rangeCell.EntireRow.Insert 
      rangeCell.EntireRow.Insert 

這是應該發生的事情:https://gyazo.com/c7f2bf238837fe2e3bca31a4505f6b4e

然而,這是發生了什麼: https://gyazo.com/28f8cc028887df565b542cdd7cb04cf2

任何幫助都非常讚賞ED!多謝你們!

回答

1

CutCopyMode(「行軍螞蟻框架」)是否有效?在這種情況下,Excel會嘗試在插入時粘貼。在Insert語句之前使用Application.CutCopyMode=0以確保。

否則,它應該工作(至少對我的作品)......

此外,您還可以一次將兩行加快步伐: rangeCell.Resize(2,1).EntireRow.Insert xlShiftDown

+0

感謝的人,原來如此!不知道這甚至是一件事xD – Matthew