0

私は特定のケースにアプローチしようとしてきましたが、これまでに得たものからどこへ行くべきかまだわかりません. どんな助けでも大歓迎です。

ここで自分の特定のケースにそれを構築できるかどうかを確認したいものを見つけました。2 つの別々のファイルを使用する代わりに、内容を file2 から sheet3 にコピーして、これも機能するかどうかを確認しました。しかし、値を変更した後も、エラーが発生しました(実行時エラー9.下付き文字が範囲外です)

もともと、私は2つのExcelファイルを持っています。

File1 には、sheet2 の A5 の後に始まる columnE に項目名があります。File2 には、sheet1 の A3 の後に始まる columnA に項目名があります。

File1のColumnDから見つかったfile2のColumnDに、file1のColumnEのセル値と一致するfile2のColumnAのセル値ごとに数値(バーコード)を配置できるマクロを書きたいと思います。

言い換えれば、列Dにバーコードがない列Aのアイテム名を持つファイル2、ファイル1列Eのすべてのアイテムのリストを検索し、完全に一致する名前を見つけ、その同じ行からバーコードを含む列Dの値をコピーし、バーコード値を空のファイル2に貼り付けます列D。

Sub Find_Barcode()

Dim PartRngSheet1 As Range, PartRngSheet2 As Range
Dim lastRowSheet1 As Long, lastRowSheet2 As Long
Dim cl As Range, rng As Range

lastRowSheet1 = Worksheets("Sheet2").Range("E65536").End(xlUp).Row
Set PartRngSheet1 = Worksheets("Sheet2").Range("A1:A" & lastRowSheet1)

lastRowSheet2 = Worksheets("Sheet3").Range("A65536").End(xlUp).Row
Set PartRngSheet2 = Worksheets("Sheet3").Range("A1:A" & lastRowSheet2)

For Each cl In PartRngSheet1
    For Each rng In PartRngSheet2
        If (cl = rng) Or (cl = rng.Offset(0, 1)) Then
            rng.Offset(0, 4) = cl.Offset(0, 1)
        End If
    Next rng
Next cl

End Sub
4

1 に答える 1

1

以下のコードを試してください: File1 と File2 が 2 つの異なるワークブックであり、開いていると仮定します。

Sub Find_Barcode()

    Dim lastRow As Long, rngFind As Range, rngFound As Range
    lastRow = Workbooks("File2").Sheets("sheet1").Range("A65000").End(xlUp).Row

    Workbooks("File1").Activate
    Set rngFind = Workbooks("File1").Sheets("sheet2").Range("E5", Range("E65000").End(xlUp).Row)


    For i = 3 To lastRow

        Set rngFound = rngFind.Find(what:=Workbooks("File2").Sheets("sheet1").Cells(i, 1))
        If Not rngFound Is Nothing Then
            rngFound.Offset(0, -1).Copy Workbooks("File2").Sheets("sheet1").Cells(i, 4)
        End If

    Next

End Sub
于 2013-04-07T07:08:00.787 に答える