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を次のように範囲として定義します。

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 に答える