VBA-SVERWEIS über mehrere Blätter hinweg
Also ich habe zwei Listen, die jeweils in einem anderen Blatt. Ich bin der überprüfung, dass die Werte in Blatt B sind auch in Blatt A. ich bin mit SVERWEIS für diese, das problem scheint mit dem Bereich Aussagen, wie dieser Bereich erscheint 'leer'.
Meinen VBA-versuchen, so etwas wie,
Dim lookupVal As String
Dim myString As String
For i = 1 to N
lookupVal = Sheets("b").Cells(1 + i, 2)
myString = Application.WorksheetFunction.VLookup(lookupVal, Sheets("a").range(Sheets("a").Cells(9,3), Sheets("a").Cells(N+8, 3)), 1, False)
If IsEmpty(myString) Then
Sheets("b").Cells(1+i, 3) = ""
Else
Sheets("b").Cells(1+i, 3) = myString
End if
Next i
Bekomme ich die Meldung 'Run-time-1004: Application-defined or object-defined error'. Jede Hilfe zu schätzen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Probleme in deinem code:
für
worksheetfunction.vlookup
des Suchbereichs nicht flüchtig.Also der Weg, um dieses Problem zu lösen, ist die Verwendung zusätzlicher Variablen zu tun es permanent
wenn
worksheetfunction.vlookup
nicht finden, die Suche Wert, dann wird die Fehlermeldung angezeigt, in diesem Fall müssen Sie zusätzliche manipulation mit FehlerbehandlunglookupVal
deklariert werden müssenas Range
durch formatieren der Zellen (lookup-Bereich und lookup-Wert) kann unterschiedlich sein, aber in deinem code die Zellen Wert wird immer umgewandelt in string-Typ, und Sie werden nicht in der Lage zu finden, die zahlen, wenn Sie konvertiert in string -myString
auch erforderlich deklariert werdenas Variant
aufgrund der gleichen Grund, wie unter "3." Geben Sie der Zelledouble
zum Beispiel, aber dein code konvertiert es instring
damit, Ihre aktualisierte code unten funktioniert einwandfrei
alternative Art und Weise unter
Ändern Sie den code der unten.
If IsEmpty(myString)
ist der falsche Weg, es zu tun. Im Falle von#N/A
, dass die Aussage immer noch wahr sein.Ist es das, was Sie versuchen?