我有一个表"Table1",其中包含我们处理中的所有订单。我想遍历此表以查找输入了完成时间的行,并将其移动到另一张工作表上的已完成表中。所以它需要遍历表格,检查完成时间列是否为空。这是表中的第 8 列和工作簿中的 J 列。
我已经尝试了一些在Stack和其他网站上找到的建议,但似乎没有任何效果。下面的代码不返回错误,但不执行任何操作。
Sub closeItems()
Dim i, iLastRow As Integer
Dim oLastRow As ListRow
iLastRow = ActiveSheet.ListObjects("Table1").ListRows.Count
For i = 1 To iLastRow
If Cells(i, 8).Value <> vbNullString Then
Rows(i).Copy
Set oLastRow = Worksheets("Finished").ListObject("Finished").ListRows.Add
Application.CutCopyMode = False
Rows(i).EntireRow.Delete
End If
Next
End Sub
我想将已完成的条目移动到已完成的表中,并从活动表中删除该行。
这是一个过滤、复制和删除的选项
Sub closeItems()
Dim tb1 As ListObject
Dim tb2 As ListObject
Dim Lrow As Long
Set tb1 = ActiveSheet.ListObjects("Table1")
Set tb2 = Worksheets("Finished").ListObjects("Finished")
Lrow = tb2.ListRows.Count
tb1.Range.AutoFilter Field:=8, Criteria1:="<>" & vbNullString
NumRows = tb1.DataBodyRange.Cells.SpecialCells(xlCellTypeVisible).Rows.Count
tb1.DataBodyRange.Cells.SpecialCells(xlCellTypeVisible).Copy
tb2.DataBodyRange(Lrow + 1, 1).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Application.DisplayAlerts = False
tb1.DataBodyRange.Cells.SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
End Sub