Индекс вне диапазона при настройке диапазона - PullRequest
0 голосов
/ 03 июля 2019

По линии Установите srchrange = Workbooks (wipreport). Рабочие листы («1. Отчет WIP»). Диапазон («B15: B»)

Я получил ошибку Subscript вне диапазона. wipreport выбирается выше из файла. В рабочей тетради есть лист "1. Отчет WIP". Я скопировал это. Рабочие книги BPM-Tool уже открыты, но у меня нет ошибок по этой строке кода. Я даже не могу попробовать, если vlookup работает.

With Application.FileDialog(msoFileDialogFilePicker)
        'Makes sure the user can select only one file
        .AllowMultiSelect = False
        .Title = "Select WIP Report"
        .ButtonName = "OK"
        'Filter to just the following types of files to narrow down selection options
        .Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
        'Show the dialog box
        .Show

        'Store in fullpath variable
        wipreport = .SelectedItems.Item(1)
    End With


Workbooks.Open wipreport


Dim lookFor As Range
Dim srchrange As Range

Set lookFor = Workbooks("BPM-Tool.xlsm").Worksheets("BPM-Report").Cells(10, 2)

Set srchrange = Workbooks(wipreport).Worksheets("1. WIP report").Range("B15:B")

    lookFor.Offset(0, 317).Value = Application.VLookup(lookFor, srchrange, 18, False)

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Workbooks.Open принимает полное имя файла, например, C: \ Temp \ myfile.xlsx

Workbooks () принимает только имя файла, например, myfile.xlsx

Вы можете использовать этот код, чтобы получить объект рабочей книги, а затем использовать его:

' Get the workbook object
Dim wk As Workbook
Set wk = Workbooks.Open(wipreport)

' Use the workbook object
wk.Worksheets("1. WIP report").Range ("B15:B")
0 голосов
/ 03 июля 2019

Попробуйте:

With Application.FileDialog(msoFileDialogFilePicker)
        'Makes sure the user can select only one file
        .AllowMultiSelect = False
        .Title = "Select WIP Report"
        .ButtonName = "OK"
        'Filter to just the following types of files to narrow down selection options
        .Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
        'Show the dialog box
        .Show

        'Store in fullpath variable
        wipreport = .SelectedItems.Item(1)
    End With

Dim wb As Workbook
Set wb = Workbooks.Open(wipreport)


Dim lookFor As Range
Dim srchrange As Range

Set lookFor = Workbooks("BPM-Tool.xlsm").Worksheets("BPM-Report").Cells(10, 2)

Set srchrange = wb.Worksheets("1. WIP report").Range("B15:B1000")

    lookFor.Offset(0, 317).Value = Application.VLookup(lookFor, srchrange, 18, False)

wipreport является строкой, а не объектом Workbook, поэтому вы получаете сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...