如果condition - 我的循环在整个循环范围内复制我的最后一个if条件

时间:2016-09-03 19:01:03

标签: vba excel-vba loops if-statement excel

我正在尝试识别显示数字68700的所有行,然后在下面添加一行以及复制所述行,然后粘贴它的副本。

它在每行中添加这一行直到500.我确信有一种简单的方法可以解决这个问题,但我对VBA不够熟练,无法弄明白。

For Z = 2 To 500
    If Range("E" & Z) = 68700 Then
        Rows(Z + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows(Z).Copy
        Rows(Z + 1).PasteSpecial xlPasteValues
    End If
Next Z

1 个答案:

答案 0 :(得分:3)

使用反向循环,因为在添加每一行后,您的范围将超出第500行。

尝试此操作(未经测试

Sub Sample()
    Dim ws As Worksheet
    Dim i As Long

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        For i = 500 To 2 Step -1
            If .Range("E" & i) = 68700 Then
                .Rows(i + 1).Insert Shift:=xlDown
                .Rows(i).Copy .Rows(i + 1)
            End If
        Next i
    End With
End Sub