2

私はVBAコードに比較的不慣れですが、行にリストされているアイテムの「ステータス」に基づいて整理しようとしているワークブックを持っています。

「M」列にドロップダウンボックスがあり、ユーザーは「HOLD」または「RELEASED」を選択できます...この値に基づいて、ラインアイテムをコピーしてシート2の同じ行に貼り付ける必要があります。 value = "RELEASED"(広告申込情報の範囲の例は( "B7:N7")(スプレッドシートはまったく同じ形式です)。このためのコードがありますが、「RELEASED」の広告申込情報をシートから削除する必要があります。 1をコピーして、シート2に貼り付けた後。

これが私が持っているものです...(パーツステージングログ=シート1...リリースされたパーツログ=シート2)

Public Sub CopyPasteRows()

Sheets("Parts Staging Log").Select
' Find the last row of data
FinalRow = Range("B828").End(xlUp).Row
' Loop through each row
For x = 7 To FinalRow
' Decide to copy based on column M value "RELEASED"
ThisValue = Range("M" & x).Value
If ThisValue = "RELEASED" Then
Range("B" & x & ":BM" & x).Copy
Sheets("Released Parts Log").Select
NextRow = Range("B828").End(xlUp).Row + 1
Range("B" & NextRow).Select
ActiveSheet.Paste
Sheets("Parts Staging Log").Select
End If
Next x

End Sub

誰かが元の広告申込情報の削除を手伝ってくれるなら、それは素晴らしいことです。他のコメントも受け付けています!

ありがとう!

4

1 に答える 1

0

これに対する私の見解:ループを削除し(遅すぎる)、オートフィルターに置き換えます

Public Sub CopyPasteRows()
Dim FinalRow As Long

With Sheets("Parts Staging Log")
' Find the last row of data
    FinalRow = .Range("B828").End(xlUp).Row
    .Range("B6:BM" & FinalRow).AutoFilter
    .Range("B6:BM" & FinalRow).AutoFilter field:=12, Criteria1:="RELEASED"
    .Range("B7:BM" & FinalRow).SpecialCells(xlCellTypeVisible).Copy Sheets("Released Parts Log").Range("B828").End(xlUp).Offset(1)
    .Range("B7:BM" & FinalRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    .Range("B6:BM" & FinalRow).AutoFilter    
End With


End Sub
于 2012-11-05T21:30:24.380 に答える