2017-06-06 58 views
1

我在尝试修复它时出现了另一个问题,并且在此代码出现问题之前。在这行代码,代码有错误:无法获取工作表功能类的vlookup属性

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

我得到的错误无法获取WorksheetFunction类”

整个代码的VLOOKUP属性下方。感谢您的帮助!

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 
+0

尝试application.vlookup – Phil

+0

谢谢你,菲尔,工作!如果你不介意回答,但Application.VLookup和Application.worksheet有什么区别。 VLOOKUP?为什么在工作表部分不在时,vlookup能够工作? – Excel

回答

2

你的问题是,你还没有设置rev_wbk。

+0

++你打败了我:D –

+0

ohh我甚至没有注意到这一点。谢谢!但另一个问题是,这条线,“如果不是(IsError(Application.WorksheetFunction.VLookup(item,lookup_range,2,False)))然后”现在说无法获得工作表函数类的vlookup属性。 – Excel

2

你已经宣布Dim rev_wbk As Workbook,但你还没有初始化它,因此你得到错误

1

I get the error "Run time error 91, object variable or with block variable not set" but I have set when I assign item's value. I tried with and without set...

Set关键字用于分配一个唯一的对象类型。 itemVariant,虽然它可能是一个对象,Range.Value不是一个对象类型,它是一个字符串,数字或错误类型和将被分配了类似:

item = ... 

实际运行时间91错误意味着你引用尚未分配对象实例的对象变量。查看您的代码:您从来都不Set rev_wbk ...任何现有Workbook所以当你宣布它作为一个Workbook对象,这是目前一个Nothing,你不能做Nothing.MethodNothing.Property不提高91错误:)

0

您需要使用Application.Vlookup

我不是100%确定为什么application.worksheetfunction.vlookup停止工作,但它过去与application.vlookup不同,因为如果发生错误,它会返回不同的错误对象。

自Office 2007以来的某个时候,它似乎已被删除,但intellisense已停留在那里。

相关问题