我的macros是runnig,但跳过行

我有这个代码移动任何东西命令到另一个工作表,它的工作原理,除了它跳过行,我必须运行几次,让一切移动,任何帮助将不胜感激谢谢

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 

当你迭代你正在跳过的行。

相反,从下往上删除:

 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 

问题在于,每当你剪一排,你也跳过下一行。

例如

  • 您的索引是5。
  • 第5行符合你的条件
  • 你裁剪第5行,然后粘贴到另一张纸上
    • 排6成为新排5
    • 该指数移动到6
    • 评估第6行(之前的第7行),并跳过先前的第6行。

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