符合条件时循环不会结束

我有一个名为“小计”的工作表,我正在识别2行要减去1和2(行与“2”应从行中减去“1”)。 我需要在“2”行下面插入一行,以便在所需的单元格中添加正确的公式。 我select包含条件(1,2)的列,然后对“2”执行查找命令,然后使用offset属性select下面的单元格并插入一行。 这很好,但是当我应用循环时,它不会停止。 我已经指出,如果活动单元格=“2XXXXX”,则退出“执行”。 我已经尝试了几个变化,并以相同的无限循环结束。 谁能告诉我我做错了什么? 这是我的代码:

Sub insert_row_1() ' Range("D1").Select Selection.End(xlDown).Activate ActiveCell.Offset(1, 0).Activate ActiveCell.FormulaR1C1 = "2XXXXX" Range("A1").Select Columns("D:D").Select Selection.Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate Do If ActiveCell.Value = "2" Then ActiveCell.Offset(1, 0).Activate ActiveCell.EntireRow(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ElseIf ActiveCell.Value <> "2" Then With Columns("D") Selection.FindNext(After:=ActiveCell).Activate ActiveCell.Offset(1, 0).Activate ActiveCell.EntireRow(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End With ElseIf ActiveCell.Value = "2XXXXX" Then Exit Do End If Loop End Sub 

不幸的是,我不能让你的循环工作,但是,如果我正确理解你的目标,可能有一个更简单的方法来完成你所需要的。

据我了解,你想:

  1. 在列D中每行有2个的下方插入一行
  2. 在新行的E列中,从E列上面一行的值中减去新行上面一行的列E的值。

以下将做到这一点:

 Sub InsertAfter2() For Each Cell In Range("D:D") If Cell.Row <> 1 Then If (Cells(Cell.Row - 1, 4).Value = 2) Then Cell.EntireRow(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(Cell.Row - 1, 4).Value = "Result:" Cells(Cell.Row - 1, 5).Value = (Cells(Cell.Row - 3, 5).Value) - (Cells(Cell.Row - 2, 5).Value) End If End If Next Cell End Sub 

这将采取如下的数据:

在这里输入图像说明

并生成如下所示的数据:

在这里输入图像说明