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

3

我很不熟悉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

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

如有帮助,感激不尽。提前致谢。


看一下这个答案。它涉及将数据添加到ListObject中。 - chris neilsen
谢谢Chris。这确实提供了一些有用的提示,以便访问我创建的ListRow的Range Child Object,但不幸的是,我仍然找不到正确的语法将剪贴板中的行“粘贴”到该范围内。有什么想法吗? - user1651899
1个回答

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

请注意,您仍然存在一个问题,即在尝试循环遍历行时删除了这些行,因此您可能需要更改循环,使其从底部开始向上移动。

谢谢,这个完美地解决了!你关于循环问题的看法也是正确的,我已经纠正了。感谢你的帮助! - user1651899

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接