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

我之前和之后有这个代码的问题,当我尝试修复它发生的另一个问题。 在这行代码中,

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

我得到的错误无法获得工作表function类的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 

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

你已经声明Dim rev_wbk As Workbook但你还没有初始化,因此你得到的错误

我得到错误“运行时错误91,对象variables或块variables未设置”,但我已经设置时,我分配项目的价值。 我尝试过,没有设置…

Set关键字仅用于分配对象types。 itemVariant ,虽然它可能是一个对象,但Range.Value不是一个对象types,它是一个string,数字或错误types,将被赋值为:

 item = ... 

实际的Runtime 91错误意味着你正在引用一个尚未被分配对象实例的对象variables。 查看你的代码:你不会Set rev_wbk ...为任何现有的Workbook所以当你将它声明为Workbook对象时,它目前是Nothing ,而你不能做Nothing.Method提高91错误:)

你需要使用Application.Vlookup

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

在2007年以来的某个时候,似乎已经被删除了,但智能感已经停留在那里。