vba vlookup 424对象在For循环中出错

时间:2019-01-04 03:14:43

标签: excel vba for-loop

我是VBA的新手,并且从事VBA的研究和开发近一年了。我要执行的操作基于在工作表中某个位置的下拉菜单中进行的选择,它根据Vlookup将B列中的数据从名称更改为登录名。我不断收到“需要对象”错误,所以我猜测这意味着我还没有声明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 :(得分:1)

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)