已经有好几天了,我正在网上搜索我的应用程序的正确代码/帮助。 情况:如果某个客户的某个产品完成,第9列给出“就绪”。当发生这种情况时,整行必须以“历史”列表的形式移动到表2,并从“最新”列表中消失。
我的代码是下一个:
Sub MoveDelete()
Dim i As Integer
Dim y As Integer
Application.ScreenUpdating = False
i = ActiveSheet.UsedRange.Rows.Count
For y = i To 1 Step -1
If Cells(y, 9).Value = "Mag weg" Then
Cells(y, 9).EntireRow.Cut Worksheets(2).Cells(i, 1)
Cells(y, 1).EntireRow.Delete
i = i + 1
End If
Next
End Sub
此代码正在运行,但会产生其他问题。假设今天我的范围是40和3行应该移动到第二个工作表,它们被放置在第40,39和38行(而不是1,2,3,这将更好)。但是,例如,明天我在最新列表中添加了5行,并且可以再次删除4行旧行,它将覆盖以前的行(但我希望它们在4,5,6和7上)。
我的目标是拥有一个可以每天更新的列表,以便生产线清晰地查看工作负载,并在第二页上列出包含上个月完成的所有产品/客户信息的列表。
我希望有人可以帮助我。如果有更多问题,请随时提出!非常感谢!
答案 0 :(得分:2)
您可以将新移动的行追加到sheet2中已存在的行的末尾。
Sub MoveDelete()
Dim i As Integer, y As Integer, j as Integer
Application.ScreenUpdating = False
'Find first free row in sheet2
j = Worksheets(2).cells(Rows.Count, 9).End(xlUp).Row + 1
i = ActiveSheet.cells(Rows.Count, 9).End(xlUp).Row
For y = i To 1 Step -1
If Cells(y, 9).Value = "Mag weg" Then
Rows(y).Copy Worksheets(2).Rows(j)
Rows(y).EntireRow.Delete
j = j + 1
End If
Next
Application.ScreenUpdating = True
End Sub