将行移动到工作簿中的另一个工作表

时间:2010-06-23 15:52:38

标签: excel

我需要帮助! 我不熟悉VBA或宏,但我找不到任何其他方法来完成我不需要使用它的工作。

我有一张表,我将用它来跟踪采购订单,我需要做的是;当我在收到的第1页(采购订单)中有一行时,即收到的日期已记录在第H列中,我需要将整行切割并粘贴到第2页(收到的订单)。

标题占据行的前7行,所以我需要宏来查看行8-54。从表单1中删除收到的项目后,我还需要删除该行,或者最好是按列A对列表进行排序,移动现在已空的行,该行已从未来的条目中删除。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我测试了这个,这是一种方法:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Dim receivedDate As Range, nextOpen As Range, isect As Range

Set receivedDate = Sheet1.Range("H8:H54")
Set isect = Application.Intersect(Target, receivedDate)

If Not (isect Is Nothing) And IsDate(Target) = True Then
    Set nextOpen = Sheet2.Range("A1").End(xlDown).Offset(1, 0)
    Target.EntireRow.Copy Destination:=nextOpen.EntireRow
    Target.EntireRow.Delete
End If

Application.EnableEvents = True

End Sub

这将被粘贴到Sheet1代码中。每次在sheet1上更改单元格时,代码都会检查它是否在您指定的临界范围内。 (H8:H54)如果是,则检查它是否是日期。如果是,则复制整行,将其放在Sheet2上的下一个打开的行中,并删除原始行。它下面的细胞会向上移动,因此没有间隙。

由于代码在单元格更改事件上起作用,因此它会禁用“Application.EnableEvents”以避免更改单元格的循环以调用更改单元格以调用事件的事件...等等。

答案 1 :(得分:0)

“记录宏”功能应足以执行您描述的任务。在Excel 2007中,转到功能区中的“开发人员”选项卡,然后选择“记录宏”,并执行您所描述的步骤。它将记录等效的VBA代码,然后您可以执行 - 或调整/修改。