2013-06-25 169 views
0

我有一個名爲CASES-PENDING的工作表,其中包含許多行數據。在每天的基礎上,我將特定行的開始單元格的狀態更改爲「已完成」(從「待定」更改)。與其不必剪切該行並粘貼在我的其他CASES-DONE標題工作表上,我想要一個宏來做到這一點。 我想在更改多行數據的狀態(從「掛起」到「完成」)後運行宏。然後,所有這些行必須剪切並粘貼到另一個工作表上。 這可能嗎? 非常感謝!Excel宏將一行工作表中的特定行從一個工作表切換到另一個工作表

回答

0

這只是在黑暗中刺傷,但我一直在處理類似於這種情況的最近。

Dim LastRow As Long 
Range("1:1").AutoFilter Field:=(Row you have "Done" in), Criteria1:="Done" 
LastRow = Cells(Rows.Count, 3).End(xlUp).Row 
Range("CellRangeYouNeedCopied" & LastRow).Copy Destination:=Sheets("SheetX").Range(X,Y) 

基本上這個過濾器,只在他們開展的行,copys和它們粘貼在你決定什麼名字等板材。只記得替換所有的變量。我在這方面還很新,所以我可能是錯的,但值得一試!

編輯:您也可以將其記錄爲宏,然後使用Long變量更改範圍以使其變量。

0

你也可以這樣做。比AutoFilter解決方案更多的代碼,但可能更靈活。

Sub MoveDoneRows() 
    Dim nStatusCol As Integer 
    nStatusCol = 1 

    Dim i As Integer 
    i = 2 

    ' select first row to insert rows into DONE sheet 
    Dim nInsertRow As Integer 
    Sheets("CASES-DONE").Select 
    Range("A1").Select 
    Selection.End(xlDown).Select 
    nInsertRow = ActiveCell.Row + 1 

    ' move rows with status done 
    Dim sStatus As String 
    Dim sPasteRow As String 
    sStatus = Sheets("CASES-PENDING").Cells(i, nStatusCol).Value 
    While sStatus <> "" 
    If sStatus = "done" Then 
     ' cut the current row from PENDING sheet 
     sPasteRow = i & ":" & i 
     Sheets("CASES-PENDING").Select 
     Rows(sPasteRow).Select 
     Selection.Cut 

     ' paste into DONE sheet 
     Sheets("CASES-DONE").Select 
     Cells(nInsertRow, nStatusCol).Select 
     ActiveSheet.Paste 
     nInsertRow = nInsertRow + 1 

     ' delete empty row from PENDING sheet 
     Sheets("CASES-PENDING").Select 
     Rows(sPasteRow).Select 
     Selection.Delete Shift:=xlUp 
    Else 
     i = i + 1 
    End If 
    sStatus = Sheets("CASES-PENDING").Cells(i, nStatusCol) 
    Wend 
End Sub 
相關問題