Excel VLookup“对象必需”错误

时间:2014-01-24 18:23:40

标签: excel vba excel-vba

这是另一个“当它不起作用时这么简单它令人抓狂”的类型问题。

下面有一个宏。它基于一个与C3相关联的ActiveX组合框。当用户进行选择时,宏应该在另一个工作表上找到该选择,识别isbn(在第2列中),并返回到原始工作表以将其粘贴到适当的单元格(C4)中。

单步执行,会在isbn.Select中抛出“Object Required”错误。

我确信这很简单。永远是。你能帮我一把吗?

Private Sub TitleSelection_Change()

Dim lookFor As Range
Dim rng As Range
Dim isbn As Variant

Set lookFor = Sheets("AAP Dashboard").Range("C3")
Set rng = Sheets("Books").Columns("A:I")

isbn = Application.VLookup(lookFor, rng, 2)

Application.ScreenUpdating = False

isbn.Select
Selection.Copy
Sheets("AAP Dashboard").Range("C4").Select
Selection.Copy
ActiveSheet.Paste
Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

2 个答案:

答案 0 :(得分:2)

您可以稍微修改代码以获得所需的结果:

Set lookFor = Sheets("AAP Dashboard").Range("C3")
Set Rng = Sheets("Books").Columns("A:I")

isbn = Application.Match(lookFor, Rng.Columns(1))

If Not IsError(isbn) Then
    Rng.Cells(isbn, 1).Select
    'your code here
End If

顺便说一下,尽量避免SelectActive...语句(how to avoid them

答案 1 :(得分:2)

您无法选择isbn,因为它是变体对象,它没有该成员。

尝试:

Dim lookFor As Variant
Dim rng As Range
Dim isbn As Variant

lookFor = Sheets("AAP Dashboard").Range("C3").Value
Set rng = Sheets("Books").Columns("A:I")

isbn = Application.WorksheetFunction.VLookup(lookFor, rng, 2, FALSE)

Application.ScreenUpdating = False
Sheets("AAP Dashboard").Range("C4").Value = isbn
Application.ScreenUpdating = True

我认为你缺少Application和Vlookup之间的对象,添加“WorksheetFunction”。另请注意,vlookup返回它在第2列中找到的值,因此无需复制和粘贴。最后请注意,Vlookup的第一个参数是一个值而不是一个范围对象,因此我将lookFor更改为Variant