2017-06-06 3 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

try application.vlookup – Phil

+0

Philさん、ありがとうございました!あなたが答えるのは気にならないが、Application.VLookupとApplication.worksheetの違いは何か。 VLookup?ワークシート部分がないとvlookupはなぜ機能しますか? – Excel

答えて

2

あなたの問題は、rev_wbkを設定していないことです。

+0

++あなたは私にそれを打つ:D –

+0

オハイオ州私は気付かなかった。ありがとうございました!もう1つの問題は、この行が「If Not(IsError(Application.WorksheetFunction.VLookup(item、lookup_range、2、False)))」です。次に、「worksheet関数クラスの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がオブジェクト型ではありません、それは文字列、数値、またはエラータイプだとのように割り当てられることになります。実際のランタイム91エラーは、あなたがしている意味

item = ... 

まだオブジェクトのインスタンスが割り当てられていないオブジェクト変数を参照します。あなたのコードの上に見て:あなたはとても既存WorkbookからSet rev_wbk ...しないあなたはWorkbookオブジェクトとしてそれを宣言したが、それは現在Nothingだ、とあなたは91エラーを出さずにNothing.MethodまたはNothing.Propertyを行うことはできません:)

0

あなたはApplication.Vlookup

application.worksheetfunction.vlookup動作を停止しますが、エラーが発生した場合、それは別のエラーオブジェクトを返したため、それがapplication.vlookupは異なることに使用される理由を、私は100%わからないを使用する必要があります。

オフィス2007年以降、ある時点では削除されたように見えますが、インテリセンスはそこにとどまっています。

関連する問題