2016-08-31 2 views
0

Ich versuche, Vlookup zu verwenden, um eine Zeichenfolge aus einem Worddokument zu lesen und entsprechende Werte aus einem Excel-Blatt zurückzugeben. Ich bekomme anscheinend einen "Index-out oder Range" Fehler in der vlookup Funktion.Word/Excel Vba vlookup "Index außerhalb des Bereichs" Fehler

Dies ist das Arbeitsblatt, das ich auf der Suche bin: Sample Data

Der Code, den ich habe, ist:

Sub Autofill() 
Dim oExcel As New Excel.Application 
Dim testdb As Excel.Workbook 
Dim testvar1 As Double 

Set testdb = oExcel.Workbooks.Open("k:\SIF\Vibration\Dbase.xlsm") 

testvar1 = oExcel.WorksheetFunction.VLookup("Roger", testdb.Sheets("Main").Range("A1:C4"), 2, False) 

MsgBox (testvar1) 

End Sub 

I als auch die Application.Vlookup Funktion versucht, mit, ohne Erfolg. Habe den gleichen Fehler.

+0

Dies ist eine Aufnahme im Dunkeln, aber haben Sie versucht, oExcel als Excel.Application zu deklarieren? Fügen Sie dies vor der Einstellung testdb, set oExcel = neue Excel.Application – Alex

+1

Sie würden wahrscheinlich diesen Fehler erhalten, wenn der Name des Blattes 'Main' nicht in der Datei DBASE.XLSM existiert. Vielleicht gibt es einen zusätzlichen Platz oder etwas, überprüfen Sie auf Genauigkeit. Ich emulierte deinen Code und es scheint in Ordnung zu sein. Eine Sache, die ein Problem sein könnte, ist, wenn Sie erwarten, eine Zeichenfolge zurückzugeben, möchten Sie vielleicht testvar1 zu einem 'String' und nicht' Double' ändern. –

+0

Ich vermute, dass Sie Ihren Fehler erhalten, weil Ihr 'Vlookup' einen Fehler zurückgibt (da nicht gefunden), müssen Sie Fehlerbehandlung hinzufügen, falls Ihr' Vlookup' nicht erfolgreich ist, siehe Link: http://stackoverflow.com/questions/ 18063214/how-to-error-handle-1004-Fehler-mit-Arbeitsblattfunktion-vlookup –

Antwort

0

Dieses Skript funktionierte für mich. Stellen Sie sicher, dass die Registerkarte "Main" vorhanden ist. So habe ich den Fehler dupliziert.

Ein fehlender Wert in der VLookup wird Ihnen "Fehler, Vlookup-Eigenschaft ..." Fehler zu erhalten.

+0

Es funktionierte für mich auch –

+0

Mein Blatt Name in der Arbeitsmappe und der Code war identisch und die Arbeitsmappe wurde nicht ausgeblendet. Arbeitet immer noch nicht mit der oExcel.Workbooks.Open(), also habe ich mit GetObject() ersetzt und es hat funktioniert. Konnten Sie eine Idee haben, warum dies geschehen würde? – Shiv

+0

Ehrlich gesagt, bin ich mir nicht sicher, ohne es aus erster Hand erleben zu können (was ich gerne hätte). Ein paar Longshots, die ich habe, gibt es ein unveröffentlichtes COM-Objekt, das VBA nicht aus dem Speicher freigegeben hat, oder es könnte umweltbedingt sein. Vielleicht gibt es einen workbook_open() - Prozess in der Arbeitsmappe? – Kevin

Verwandte Themen