2016-05-19 28 views
0

私はリソースを作成するプログラムを作成しました - 概要。プログラムのある時点で私はVBAを介してvlookup-functionを設定したい。シートに手動でvlookup関数を設定した場合(セルに数式を書き込む)(=SVERWEIS(B2;'MS Project'!A:H;2;FALSCH))(「SVERWEIS」は「VLOOKUP」のドイツ語、「FALSCH」は「FALSE」のドイツ語です)、正常に動作しますしかし、次のコード行を使ってこの数式をセルに自動的に挿入しても、それはできません。Excel 2013 VBA Vlookup-Functionエラー

rngTarget.Cells(i, col + 1).value = WorksheetFunction.VLookup(rngTarget.Range("B" & i), _ 
ThisWorkbook.Worksheets("MS Project").Range("A1:H2000"), 2, 0) 

"rngTarget"は、activeSheetのusedRangeを表します。

「i」は、現在作業している行を表します。

以下の画像は、プログラムの実行中に表示されるランタイムエラー(1004)を示しています。

enter image description here

それはWorksheetFunction-ObjectのVLOOKUP、プロパティを割り当てることができなかったことを言います。

編集:この行が実行される前に、検索されたオブジェクトが「Msプロジェクト」に存在するかどうかを確認します。存在する場合のみ、vlookup-functionが設定されます。

SOLUTION:私はこの問題を考え出したが、私は変更:

rngTarget.Cells(i, col + 1).value = WorksheetFunction.VLookup(rngTarget.Range("B" & i), _ 
ThisWorkbook.Worksheets("MS Project").Range("A1:H2000"), 2, 0) 

へ:

rngTarget.Cells(i, col + 1).value = Application.VLookup(rngTarget.Range("B" & i).value, _ 
ThisWorkbook.Worksheets("MS Project").Range("A1:H2000"), 2, 0) 

答えて

0

あなたがオブジェクト全体rngTarget.Range("B" & i)を参照している検索値の引数には、戻り値に.Value2を追加してみてくださいこの範囲の値のみ。

すなわち

rngTarget.Cells(i, col + 1).value = WorksheetFunction.VLookup(rngTarget.Range("B" & i).Value2, _ 
ThisWorkbook.Worksheets("MS Project").Range("A1:H2000"), 2, 0) 
+0

私も前に、それは何も変化しないことを試みました。しかし、私はそれをrngTarget.Range( "B"&i).Valueにします。 – flohdieter

+0

@flohdieter少し修正を参照してください、 '.Value2'を使ってみてください – Carrosive

+0

ああ大丈夫、それはまだ同じ状況を試してみました。あなたの助けをありがとう、私は問題を解決し、私の質問を編集! – flohdieter

関連する問題