每当单元格的值更改时,我都尝试在vba上编写代码以在上面插入一行

时间:2019-02-15 05:21:09

标签: excel vba

我正在使用一个数据表,其中单元格的值在几行(变量)之后发生变化。因此,每次单元格的值更改时,随着我们不断向下移动,我想在该单元格上方添加一行。

我尝试使用嵌套的for循环,因为第一个循环将用于执行第二次循环61次(发生单元格更改的次数):

Sub jcapp()
  Dim i As Integer
  Dim j As Integer
  Static k As Integer
  Dim l As Integer
  With ThisWorkbook.Sheets("Sheet1")
    k = 3
    For l = 1 To 61
      For i = k + 1 To 175    
        j = k
        If .Cells(i, 2).Value <> .Cells(i - 1, 2).Value And Not 
        IsEmpty(.Cells(i, 2).Value) Then
          k = i
          Rows(.Cells(i + 1, 1).Row).Insert shift:=xlDown
        End If
        Exit For
      Next i
    Next l
  End With
End Sub

我希望在第9行,第20行等处增加行。但是,每当单元格值更改时,什么都不会发生。没有结果。

1 个答案:

答案 0 :(得分:0)

插入(或删除)会抛出该索引。

标准方法不是试图跟踪行数,而是反向循环。

Option Explicit

Sub jcapp()

    Dim i As Long

    With ThisWorkbook.Sheets("Sheet1")

        For i = 61 To 2 Step -1

            If .Cells(i, 2).Value <> .Cells(i - 1, 2).Value Then
                Debug.Print i
                .Rows(.Cells(i, 1).Row).Insert shift:=xlDown
            End If

        Next i

    End With

End Sub