VBA- VLookup mit einem Range Objekt

Zaiga

Lieutenant
Registriert
März 2011
Beiträge
932
Hallo zusammen,

Code:
....
lngLastRow = wks.Cells(Rows.Count, "A").End(xlUp).Row
lngLastRow2 = wksZTE.Cells(Rows.Count, "A").End(xlUp).Row

wks.Range("O1:O" & lngLastRow).Formula = "=VLOOKUP(H1," & wksZTE.Range("B1:H" & lngLastRow) & ",1,0)"

Beim 2ten Argument von VLOOKUP <& wksZTE.Range("B1:H" & lngLastRow) &> gibts ein Fehler zurück. Ich würde eben gerne die Matrix variable halten.
Whr. kann man so Range an VLOOKUP nicht übergeben.

Jemand eine Idee?

Vielen Dank!
 
Hallo, schreib es mal so um. & "B1:H" & lngLastRow &
Da du den Suchbegriff hard in die Formel schreibst wirst du wohl auch in jeder Zeile das gleiche Ergebnis erhalten. PAss das auch mal an auf "=VLOOKUP(H"& Zähler &", "
"Zähler" ist die Variable der aktuellen Zeile in der die Formel geschrieben werden soll.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Zaiga
Danke für die Antwort
Aber dann verliere ich die Dynamik mit dem Worksheet, wksZTE. Das bräuchte ich eben nicht als Hardcode
 
Du kannst doch nach jedem Schleifendurchlauf eine 1 auf lngLastRow addieren.
Oder die Zeilen nach jedem Durchlauf neu ermillten, wie auch immer du das brauchst.
 
Zuletzt bearbeitet:
Danke für die Antwort.
Ich meinte eher den Verweis auf das Worksheet, wksZTE
wksZTE ist vom Typ Worksheet, somit kann ich es dynamisch wechseln. Hier nicht mehr
 
Das ist eher eine allgemein Frage, wie kann ich eine "Funktion" in eine Zelle einfügen aber eben das Sheet dynamisch verlinken also über
DIM diesessheetinderfunktion AS Worksheet
Set diesessheetinderfunktion = CodeName
 
Für mich sieht das nicht nach nem Problem mit vlookup aus, sondern damit, dass du ein Objekt in den String stopfen willst, der dann in .formula wandern soll. Was soll denn der Text sein, der da eingetragen werden soll?

Das 01:0* da vorne in der Range sieht mir ehrlich gesagt auch suspekt aus, vor allem zusammen mit der Buchstaben/Zahl Adressierung später, aber da sollte dieser Fehler nicht herkommen (denke ich).
 
Code:
wksZTE.Range("B1:H" & lngLastRow)
gibt ein Range-Objekt zurück.

Versuche es mit dem Member "Address" (=String)
Code:
wksZTE.Range("B1:H" & lngLastRow).Address
 
Zurück
Oben