2016-07-06 100 views
0

所以我的主工作表有一堆列,最后一列包含一个公式,显示“处理中”,“保持”状态, “订单放置”,“在公司”,“运送”或“取消”取决于特定条件。我试图找到一种方法来添加一个按钮,将取消复制到名为“已取消”的工作表中,并将其发送到名为已发货订单的工作表。将整行复制到另一个excel工作表,然后删除只有一部分行

我的问题是,我需要从A到V复制行,只粘贴取消工作表中下一个空行的值,然后返回主表并清除单元格B中的内容R因为该行中的其他单元格具有必须保持放置的公式,并且一旦B到R被清除出状态更改。

任何人都可以帮我解决这个问题吗?这是迄今为止我所拥有的一切,它复制了已取消的行,但我不知道该做什么之后才能删除正确的部分。

Private Sub AutoMove_Click() 
Set Rng = Range("V6:V201") 
again: 
For Each r In Rng 
If r.Value = "Cancelled" Then 
    r.EntireRow.Copy 
    Worksheets("Cancelled").Activate 
    erow = Worksheets("Cancelled").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
    ActiveSheet.Cells(erow, 1).Activate 
    Selection.PasteSpecial xlPasteValues 
    Worksheets("Current LVA").Activate 
    End If 
Next 
End Sub 

回答

0

给这个镜头。请注意我如何声明和分配所有对象(除了Rows.Count,因为在这种情况下不重要)。

Private Sub AutoMove_Click() 

    Dim wsCurr As Worksheet, wsPaste As Worksheet 

    Set wsCurr = Worksheets("Current LVA") 

    Dim r As Range, Rng As Range 
    Set Rng = wsCurr.Range("V6:V201") 

    For Each r In Rng 

     Select Case r.Value 

      Case Is = "Cancelled", "Shipped" 

       r.EntireRow.Copy 
       Set wsPaste = Worksheets(r.Value) 
       wsPaste.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues 
       'this line will clear contents of B:R for the row in the Current sheet 
       wsCurr.Range(ws.Cells(r.Row, 2), ws.Cells(r.Row, 18)).ClearContents 

     End Select 

    Next 

End Sub 
+0

谢谢!这工作完美!我如何获得它也可以做同样的事情发货的东西(但发货的工作表)?我试图在第一个if语句之后纠正,但它似乎跳过了发货的东西。它不会破坏任何东西,但只有取消的作品 – Victoria

+0

谢谢!发货的部分是在我原来的问题:) – Victoria

+0

@维多利亚 - 陷阱。我重新阅读。很高兴为你工作。请标记为已回答,以便其他人可以受益。 –

相关问题