我是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
答案 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)