多くのデータ行を含む CASES-PENDING というタイトルのワークシートがあります。毎日、特定の行の開始セルのステータスを「完了」に変更します (「保留中」から変更)。その行を切り取って、別の CASES-DONE というタイトルのワークシートに貼り付ける代わりに、マクロでそれを行いたいと思います。複数行のデータのステータスを「保留中」から「完了」に変更した後にマクロを実行したいと考えています。次に、これらすべての行を切り取って他のワークシートに貼り付ける必要があります。それは可能ですか?どうもありがとう!
質問する
5734 次
2 に答える
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)
基本的に、これは DONE を含む行のみにフィルター処理し、それらをコピーして、名前を付けた他のシートに貼り付けます。すべての変数を置き換えることを忘れないでください。私はまだこれにかなり慣れていないので、間違っているかもしれませんが、試してみる価値はあります!
編集:これをマクロとして記録し、範囲を変更して、Long 変数を使用して可変にすることもできます。
于 2013-06-25T19:28:27.083 に答える
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
于 2013-06-25T20:15:36.827 に答える