VBA - 将表行复制并粘贴到另一个表

时间:2012-09-06 12:14:23

标签: excel vba excel-vba copy-paste

我是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

我尝试了很多不同的迭代,但一直无法找到将剪贴板内容复制到新创建的行的正确方法。

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 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

请注意,在尝试循环删除行时仍然存在问题,因此您可能希望更改循环以使其从底部开始并上升。