2017-02-26 8 views
0

Ich versuche, ein Vlookup zu tun, aber es gibt Fehler 2042 zurück, auch wenn es eine Übereinstimmung gibt. Ich kann nicht herausfinden, was mit dem Code falsch ist. Jede Hilfe wird geschätzt.Excel VBA Vlookup zurück - Fehler 2042

Private Sub F6P_SORT() 

Dim targetWorkbook As Workbook 
Dim sourceSheet As Worksheet 
Dim targetSheet As Worksheet 
Dim LastRow As Long 

Set targetWorkbook = Application.ActiveWorkbook 
Set targetSheet = targetWorkbook.Worksheets("MTD") 

On Error Resume Next 
Dim Table1 As Range 
Dim Table2 As Range 
Dim Table3 As Range 

Dim IniName_Row As Long 
Dim IniName_Clm As Long 

LastRow = targetSheet.Range("A65536").End(xlUp).Row 
Set Table1 = targetSheet.Range("A2:A" & LastRow) ' CC/IO from MTD 
Set Table3 = targetSheet.Range("F2:F" & LastRow) ' Ini Name to MTD 

Set sourceSheet = targetWorkbook.Worksheets("IO Lookup") 
LastRow = sourceSheet.Range("A65536").End(xlUp).Row 
Set Table2 = Sheet1.Range("A2:D" & LastRow) ' IO from IO Lookup 


IniName_Row = Table3.Row 
IniName_Clm = Table3.Column 

For Each cl In Table1 
    targetSheet.Cells(IniName_Row, IniName_Clm) = Application.VLookup(cl, Table2.Value, 4, False) 
    IniName_Row = IniName_Row + 1 
Next cl 

End Sub 
+0

Wo tritt der Fehler auf? an der 'targetSheet.Cells (... 'Zeile in der' For cl cl'-Schleife? – BruceWayne

+1

entfernen Sie den '.Value' aus dem' Table2.Value' im VLookup. Es benötigt den Bereich nicht den Wert des Bereichs. –

+0

Fehler ist bei "targetSheet.Cells (IniName_Row, IniName_Clm) = Anwendung.VLookup (Cl, Table2.Value, 4, False)" – user7626448

Antwort

1

Wenn Sie diese Zeile:

Set Table2 = Sheet1.Range("A2:D" & LastRow) 

zu:

Set Table2 = sourceSheet.Range("A2:D" & LastRow) 

Ihr Code funktioniert

Sie auch Option Explicit an die Spitze jedes Modul hinzufügen sollte erzwinge variable deklaration. cl wurde nicht als Range deklariert!