シート 1 (列 A) にアイテムのリストがあります。シート 1 の各項目には、追加情報 (B から F) の 5 つのセルがあります。シート 2 には、シート 1 と同じ項目がいくつかありますが、すべてではありません。シート 2 から開始し、A 列の各項目番号を見て、シート 1 で同じ番号をチェックするプログラムを作成しようとしています。同じ番号が見つかると、シート 1 から B から F のセル情報をコピーし、シート 2 (B から F) のアイテム番号の隣に配置します。
For ループを使用して、シート 2 セル A2 から開始しようとしました。変数 cSn を A2 に設定しようとした後、シート 1 をループし、cSn が見つかった場合はシート 1 からシート 2 にデータをコピーします。
プログラムが正しく実行されているかどうかを確認するために、MsgBox を追加して、プログラムが見つかったことを示しました。
プログラムは実行されているように見えますが、データをコピーしてそのままにしておくことはありません。データをコピーしてから消去し、シート 1 の最後の行のデータをシート 2 のすべての行に貼り付けているようです。このサイトや他のサイトで正しいコピー/貼り付け構文を検索しましたが、見つかりません。MS Visual Basic 7.1 を使用しています。助けてください!これが私がこれまでに持っているものです...
Sub CopyItemInfo()
Dim cSn As String
Sheets(1).Select
FinalRow1 = Cells(Rows.Count, 1).End(xlUp).Row
Sheets(2).Select
FinalRow2 = Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To FinalRow2
cSn = Sheets(2).Range("A" & x)
For y = 2 To FinalRow1
If Sheets(1).Range("A" & y) = cSn Then MsgBox "Found One " & cSn
Worksheets(1).Range("B" & y).Copy Destination:=Worksheets(2).Range("B" & x)
Worksheets(1).Range("C" & y).Copy Destination:=Worksheets(2).Range("C" & x)
Worksheets(1).Range("D" & y).Copy Destination:=Worksheets(2).Range("D" & x)
Worksheets(1).Range("E" & y).Copy Destination:=Worksheets(2).Range("E" & x)
Worksheets(1).Range("F" & y).Copy Destination:=Worksheets(2).Range("F" & x)
Application.ScreenUpdating = True
Next y
Next x
Application.ScreenUpdating = True
End Sub