2017-07-25 164 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