0

A1S / Nのリストを含むExcelワークブック(serial_numbersを呼び出すことができます)がA10あります(多かれ少なかれ可能性があります)。

A1ここで、ブック「データベース」で の値を検索する必要があります。その値は通常A1、ワークブック「データベース」のセルにあります。

の値が見つかった場合は、ワークブック「データベース」の値A1をコピーして貼り付ける必要があります。これは、その値の現在の在庫を含んでいます。B2

Excel の開発者モードでは、次の結果が得られました。

Sub Macro1()
'
' Check stock for S/N in database
'

'
    Range("A1").Select
    Selection.Copy
    Workbooks.Open Filename:="database.xlsx", _
        UpdateLinks:=0
    Range("A1").Select
    Selection.Find(What:="XXXXXX", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Range("B1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("serial_numbers.xlsx").Activate
    Range("B1").Select
    ActiveSheet.Paste
End Sub

上記の部分は正しく機能していないようです。これは初めてなので、理由がわかりません。どなたか助けていただけませんか?

4

1 に答える 1

0

VBA 以外のソリューションを探している場合は、vlookup function.

このコードを試してください:

Sub testMacro()

    Dim wkbDB As Workbook
    Dim rngFind As Range, rngSearch As Range, cell As Range
    Dim shtDB As Worksheet


    Set wkbDB = Workbooks.Open(Filename:="C:\database.xlsx", UpdateLinks:=0)
    Set shtDB = wkbDB.Sheets("Sheet1")

    Set rngSearch = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")

    For Each cell In rngSearch
        Set rngFind = shtDB.Range("A1:A10").Find(What:=cell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)

        If Not rngFind Is Nothing Then
            'serial_numbers.xlsx
           cell.Offset(0, 1) = rngFind.Offset(0, 1)
        End If
    Next
End Sub
于 2013-10-01T01:57:01.163 に答える