代码有错误:无法获取工作表函数类的vlookup属性

时间:2017-06-06 13:46:01

标签: excel vba excel-vba

在我尝试修复此代码时,我遇到了另一个问题。在这行代码中,

If Not (IsError(Application.WorksheetFunction.VLookup(item, lookup_range, 2, False))) Then 

我收到错误无法获取工作表函数类的#vingup属性"

整个代码如下。谢谢你的帮助!

Sub code()
Columns("E:G").Insert shift:=xlToRight, copyorigin:=xlFormatFromLeftOrAbove
Range("E6").value = "Drink Price"
Range("F6").value = "Drink Revenue"
Range("G6").value = "Gross Sales less Drink Revenue"
Dim i As Variant
Dim item As Variant
Dim lookup_range As Range
Dim rev_wksht As Worksheet
Dim rev_wbk As Workbook
Dim vlkup_wbk As Workbook
Set rev_wksht = ActiveWorkbook.Sheets(1)
Set vlkup_wbk = Workbooks.Open("C:\Users\user\Documents\vlookup table drink prices.xlsx")
Set lookup_range = vlkup_wbk.Worksheets("Sheet1").Range("A:B")
i = 7
Do While rev_wksht.Cells(i, 1).value <> ""
   Set item = rev_wbk.Sheets(1).Cells(i, 1).value
    If Not (IsError(Application.WorksheetFunction.VLookup(item, lookup_range, 2, False))) Then
        rev_wksht.Cells(i, 5).value = Application.WorksheetFunction.VLookup(item, lookup_range, 2, False)
        rev_wksht.Cells(i, 6).Formula = rev_wksht.Cells(i, 11).value * rev_wksht.Cells(i, 5).value
        rev_wksht.Cells(i, 7).Formula = rev_wksht.Cells(i, 4).value - rev_wksht.Cells(i, 6).value
    ElseIf (IsError(Application.WorksheetFunction.VLookup(item, lookup_range, 2, False))) Then
        rev_wksht.Cells(i, 5).value = Empty
    End If
i = i + 1
Loop
rev_wksht.Range("F:G").NumberFormat = "#,##0.00"
rev_wksht.Cells.EntireColumn.AutoFit
End Sub

4 个答案:

答案 0 :(得分:2)

您的问题是您尚未设置rev_wbk。

答案 1 :(得分:2)

您已声明Dim rev_wbk As Workbook但尚未对其进行初始化,因此您收到错误

答案 2 :(得分:1)

  

我收到错误&#34;运行时错误91,对象变量或未设置块变量&#34;但是当我指定项目的值时,我已经设置了。我尝试过没有套装......

Set关键字仅用于将分配给对象类型。 itemVariant,虽然它可以是一个对象,但Range.Value不是对象类型,它是字符串,数字或错误类型,并且会被指定为:< / p>

item = ...

实际运行时91错误意味着您正在引用尚未分配对象实例的对象变量。查看您的代码:您不会Set rev_wbk ...任何现有的Workbook,所以当您将其声明为Workbook对象时,它现在是Nothing,如果不提出91错误,您就无法Nothing.MethodNothing.Property:)

答案 3 :(得分:0)

您需要使用Application.Vlookup

我不是100%确定application.worksheetfunction.vlookup停止工作的原因,但它曾经与application.vlookup截然不同,因为如果发生错误它会返回不同的错误对象。

自2007年办公室以来的某个时候,它似乎已被删除,但智能感知一直停留在那里。