vba vlookup 424 объект требуется ошибка в цикле For - PullRequest
0 голосов
/ 04 января 2019

Я новичок в VBA и работаю с ним почти год.То, что я пытаюсь выполнить, основано на выборе из выпадающего списка где-то на рабочем листе, он изменяет данные в столбце B с имен на имена входа на основе vlookup.Я продолжаю получать сообщение об ошибке «требуется объект», так что я предполагаю, что это означает, что я не объявил какой-либо результат vlookup как нечто.

Он отлично работает с s = 3, поэтому я предполагаю, что он как-то связан с циклом For, которому не нравятся данные, которые я пытаюсь пройти через него.

sub show_by_login()

'first row that is evaluated is in row 5

Dim s As Long
s = Sheets("Sheet1").Range("H17").Value
If s = 1 Then
Exit Sub
ElseIf s = 2 Then

Dim LastRow As Long
LastRow = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row

Dim i As Double
    For i = 2 To LastRow

    Dim str As Double
    str = Sheets("Sheets2").Cells(i + 3, 1).Value
    Cells(i + 3, 2) = Application.VLookup(str, Sheets("Roster").Range("A:C"), 2, False).Value
    Next i

ElseIf s = 3 Then
i = 5

Sheets("Sheet2").Range("B" & i).Value = Application.WorksheetFunction.VLookup(Sheets("Sheet2").Range("A" & i), Sheets("Roster").Range("A:C"), 2, False)

End If

End Sub

1 Ответ

0 голосов
/ 04 января 2019
Cells(i + 3, 2) = Application.VLookup(str, Sheets("Roster").Range("A:C"), 2, False).Value

vlookup возвращает значение ячейки, а не объект Range, поэтому удалите значение .Value с конца этой строки

Cells(i + 3, 2) = Application.VLookup(str, Sheets("Roster").Range("A:C"), 2, False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...