代码之家  ›  专栏  ›  技术社区  ›  Gabe Carvajal

在每个小计中,for then loop copy and paste above data vba

  •  -1
  • Gabe Carvajal  · 技术社区  · 7 年前

    我试图复制每个小计,并使用 那么 环也许这里有一个更合适的循环,我不是百分之百确定。我无法让循环在满足条件后复制小计。见以下代码:

    For I = 1000 To 2 Step -1 ' adjust 1000 to the row number of the last element
    If Cells(I, 7).Font.Bold Then
        Cells(I + 1, 1).Copy
        Selection.End(xlUp).Select
        Selection.Offset(1, -7).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
    End If
    Next
    

    我不能让宏做的是复制实际的小计,它甚至没有复制它所选的单元格。如果你需要看到我试图让循环做什么,请参阅下面的图片。

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   cstricklan    7 年前

    Cells(I + 1, 1).Copy 正在正确复制单元格内容,但实际上并没有选择单元格。然后,您试图通过移动从选定单元格开始的选择来设置目标,但移动的起点是 selection 实际上并不是由循环首先设置的。

    改变它的一种方法是不使用 .select 直到粘贴的时间。这也更有效,因为 .选择 效率非常低,应尽量减少。

    For I = 1000 To 2 Step -1 ' adjust 1000 to the row number of the last element
    If Cells(I, 7).Font.Bold Then
        Cells(I + 1, 7).Copy
        Cells(I + 1, 7).End(xlUp).Offset(1, -6).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
    End If
    Next