我的宏是runnig但跳过行

时间:2016-02-18 21:53:15

标签: excel excel-vba vba

我有这个代码将任何订购的东西移动到另一张纸上它除了因为它跳过行而且我必须运行几次才能让所有东西都被移动,所以任何帮助都会非常感谢 感谢

Sub MoveLS()
    Dim h As Variant
    Dim endrow As Integer
    Dim SB As Worksheet, ORDERED As Worksheet

    Set SB = ActiveWorkbook.Sheets("SB")
    Set ORDERED = ActiveWorkbook.Sheets("ORDERED")


    endrow = SB.Range("A" & SB.Rows.Count).End(xlUp).Row


    For h = 2 To endrow

        If SB.Cells(h, "H").Value = "Ordered" Then
           SB.Cells(h, "H").EntireRow.Cut Destination:=ORDERED.Range("A" & ORDERED.Rows.Count).End(xlUp).Offset(1)
           SB.Cells(h, "H").EntireRow.Delete


        End If
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

当您遍历行时,您正在跳过某些行。

而是从下往上删除:

For h = endrow to 2 Step -1
    If SB.Cells(h, "H").Value = "Ordered" Then
       SB.Cells(h, "H").EntireRow.Cut Destination:=ORDERED.Range("A" & ORDERED.Rows.Count).End(xlUp).Offset(1)
       SB.Cells(h, "H").EntireRow.Delete
    End If
Next

答案 1 :(得分:0)

问题在于,每次切割一行时,您也会跳过下一行。

E.g。

  • 您的索引是5。
  • 第5行符合您的条件
  • 你剪了第5行并将其粘贴到另一张纸上
    • 第6行成为新行5
    • 索引移至6
    • 第6行(先前第7行)被评估,并且跳过前一行。

尝试复制行而不是剪切它!