【问题标题】:VBA Help - paste in next row in range while in ForVBA 帮助 - 在 For 中粘贴在范围内的下一行
【发布时间】:2014-08-03 07:55:43
【问题描述】:

在将 For 循环中找到的数据粘贴到同一张工作表上不同范围的下一个可用行时遇到问题。我要粘贴的范围是(“A295:A324”)。我只使用一张纸(“打印输出”),从不使用其他纸。到目前为止,他就是我所拥有的

Sub CmpnyWkLoad_autofil()
        lr = 338    'last row
        lc = 69     'last column
        For r = 332 To lr  'start at row 332
        current = False
            For c = 60 To lc     'start at column BH
                If Cells(r, c).Value >= Range("V4").Value Then current = True: Exit For
             Next c
            If current Then Columns("A:AG").Rows(r).Copy
         Next r
End Sub

我正在循环/阅读的是列中的预填充日期(“BH:BQ”),如果它们在今天的日期之后,它会复制同一行中的前 33 列并将其粘贴到下一个可用行("A295:A324") 然后继续循环到结束。任何帮助完成这将不胜感激。

【问题讨论】:

  • 我看到你复制了这一行(虽然它是整行而不只是 A:AG,但我从来没有看到你粘贴它
  • 所有十列 (BH:BQ) 都有日期吗?您需要将它们与今天的日期进行比较吗?你的问题很不清楚。您能否说明您的数据和预期结果?

标签: vba excel


【解决方案1】:

如果我在评论中的假设是正确的,你可以试试这个:

Dim lr As Long, cel As Range

With Thisworkbook.Sheets("PrintOut")
    '~~> Check up to where your last row in BH is
    lr = .Range("BH" & .Rows.Count).End(xlUp).Row '~~> you can also use lr = 338
    '~~> You said BH row starts at 332
    For i = 332 To lrow
        For Each cel In .Range("BH" & i, "BQ" & i)
            If cel.Value >= .Range("V4").Value Then
                .Range("A" & cel.Row, "AG" & cel.Row).Copy
                .Range("A" & .Rows.Count).End(xlUp) _
                .Offset(1, 0).PasteSpecial xlPasteValues, , , True
                Exit For
            End If
        Next
    Next
End With

HTH

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多