VBA:不需要的覆盖行

已经有一段时间了,我正在寻找互联网来find我的应用程序的正确代码/帮助。 情况:如果某个客户的特定产品已经完成,第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 

结束小组

此代码正在工作,但也给出了其他问题。 假设今天我的范围是40和3行应该被移动到第二工作表,他们被放置在行40,39和38(而不是1,2,3,这将是更好的)。 但是,例如,明天我在最新的列表中添加5行,并且可以再次删除4个旧行,它将覆盖以前的行(但是我想在4,5,6和7上)。

我的目标是要有一个可以每天更新的清单,以便生产线清楚地看到工作量,并在第二页列出上个月所有产品/客户信息的清单。

我希望有人能帮助我。 如果有更多的问题,随时问! 非常感谢!

您可以将新移动的行附加到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