我是VBA的新手,我正在尝试解决我认为应该是一个非常简单的问题(我有一个Java / J2EE背景)...我在表中循环并希望将行复制到表中在另一个基于某些条件语句的工作表上。请参阅下面的代码。
Sub closeActionItems()
Dim i, iLastRow As Integer
Dim date1 As Date
Dim oLastRow As ListRow
date1 = Date
iLastRow = ActiveSheet.ListObjects("Open_Items").ListRows.Count
For i = 6 To iLastRow
If Cells(i, 7).Value <= date1 And Cells(i, 7).Value <> vbNullString Then
Rows(i).Copy
Set oLastRow = Worksheets("Closed").ListObject("Closed_Items").ListRows.Add
'Paste into new row
Application.CutCopyMode = False
Rows(i).EntireRow.Delete
End If
Next
End Sub
我尝试了很多不同的迭代,但一直无法找到将剪贴板内容复制到新创建的行的正确方法。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:3)
将srcRow定义为范围,如下所示:
Dim srcRow as Range
然后在你的循环中尝试这样做:
Set srcRow = ActiveSheet.ListObjects("Open_Items").ListRows(i).Range
Set oLastRow = Worksheets("Closed").ListObjects("Closed_Items").ListRows.Add
srcRow.Copy
oLastRow.Range.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Rows(i).EntireRow.Delete
请注意,在尝试循环删除行时仍然存在问题,因此您可能希望更改循环以使其从底部开始并上升。