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

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

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

4

1 回答 1

3

将 srcRow 定义为 Range,如下所示:

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

请注意,您仍然有一个问题,即您在尝试循环遍历行时正在删除行,因此您可能想要更改循环,使其从底部开始并上升。

于 2012-09-06T15:16:51.110 回答