Excel VBA: 将符合条件的行移动至另一个工作表

我用这个 VBA 把我已经收到付款的活移动到’history’ (sheet2) 工作表中。

如果Sheet1某行的第6列(F列)的值为’closed’,该行则被移至sheet2中末尾。

Sub Button_Remove_Closed_Click()
With Sheet1
'    For Each rw In .UsedRange.Rows
'
'        If rw.Cells(6).Value = "Closed" Then
'            Target = Sheet2.UsedRange.Rows.Count + 1
'            rw.Copy Destination:=Sheet2.Rows(Target)
'            rw.Delete
'        End If
'    Next
'
'以上程序有bug,因为例如第5行被删除后,原第6行变成了第5行,在下一循环找第6行时就跳过了原来的第6行了。
'改成这样 :-)
Dim i, j
 
j = .UsedRange.Rows.Count
 
For i = 1 To j
    If .Cells(i, 6).Value = "Closed" Then
        Target = Sheet4.UsedRange.Rows.Count + 1
        .Rows(i).Copy Destination:=Sheet2.Rows(Target)
        .Rows(i).Delete
        i = i - 1
    End If
Next
 
End With
End Sub

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">