【问题标题】:How to copy entire row from worksheet to another worksheet如何将整行从工作表复制到另一个工作表
【发布时间】:2020-08-14 21:13:33
【问题描述】:

我对 VBA 比较陌生。我有这个子过程 CutePaste,我在 worksheet_change(ByVal Target As Range) 中调用它,只要“F”列中的值发生更改,它就会执行。我的目标是复制更改的单元格的整行并将其粘贴到另一张表中(“Cast Worked”)。我的代码现在只复制更新的单元格并将其粘贴到新工作表中。请告知我如何复制更新单元格的整行。

Sub CutPaste()

  If Not Intersect(myTarget, Range("F:F")) Is Nothing Then
    ActiveCell.Activate    
    a = Sheets("Cast Worked").Cells(Rows.Count, "A").End(xlUp).Row + 1    
    Sheets("Cast Worked").Range("A" & a).Value = ActiveCell.Value    
    ActiveCell.Offset(1, 0).Select    
  End If

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你很接近。您可以使用Range.Copy 方法来执行此操作。此外,您需要将目标从worksheet_change 事件传递给您的子例程。

    Sub worksheet_change(ByVal Target As Range)
      'Pass target range to subroutine
      CutPaste(Target)
    End Sub
    
    Sub CutPaste(myTarget As Range) 
      If Not Intersect(myTarget, Range("F:F")) Is Nothing Then        
        a = Sheets("Cast Worked").Cells(Rows.Count, "A").End(xlUp).Row + 1    
        Target.EntireRow.Copy Destination:=Sheets("Cast Worked").Range("A" & a)
        Target.Offset(1, 0).Select    
      End If  
    End Sub
    

    我删除了ActiveCell.Activate,因为将活动单元格设置为活动是多余的。

    【讨论】:

    • 非常感谢 JNevill!这适用于复制行,但是,我的代码允许我在每次将单元格更新到另一张表的新行时复制并粘贴单元格,而不会覆盖现有数据。请告知我如何修改您的代码以遵循我最初的代码。
    • 这正是编写的这段代码应该发生的事情。它通过查看 A 列(从最后一行开始直到找到第一个非空行)在 Cast Worked 工作表中找到第一个空行,然后粘贴到该行。
    • 我只是做了一个小改动,改用Target.Offset(1, 0).Select 而不是ActiveCell.Offset(1, 0).Select,尽管这不会影响剪切的内容和复制的位置。
    • 好的,完美!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多