2017-06-06 109 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已停留在那裏。

相關問題