Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VLookUp- Laufzeitfehler 1004

VLookUp- Laufzeitfehler 1004
26.03.2016 14:53:39
Jassi

Hallo zusammen,
ich arbeite erst seit 2 Wochen mit VBA und habe bisher alle kleineren Problemchen selbstständig gelöst. Leider stoße ich seit 3 Tagen an meine Grenzen.
Ich habe ein VLookUp-Funktion benutzt um Daten von einem Tabellenblatt in eine anderes zu laden. Dabei erhalte ich jedoch, egal wie ich es drehe und wende, den Laufzeitfehler 1004.
Hier mein Sub:

Sub Sonnenuntergang_Sonnenaufgang()
Dim i As Integer
Dim SU As Variant
Dim letzteZeile As Integer
Worksheets(5).Range(Cells(2, 1), Cells(letzteZeile, 1)).NumberFormat = "DD.MM.YYYY"
Worksheets(4).Range(Cells(2, 1), Cells(letzteZeile, 1)).NumberFormat = "DD.MM.YYYY"
letzteZeile = Worksheets(5).Cells(Rows.Count, 1).End(xlUp).Row
SU = Worksheets(5).Range(Cells(2, 1), Cells(letzteZeile, 6))
For i = 2 To letzteZeile
Cells(i, 11) = Application.VLookup(Range(Cells(i, 1), Cells(letzteZeile, 1)), SU, 5, False)
Next i
End Sub
Ich hoffe, dass mir hier jemand helfen kann oder einen Tipp erhalte mit dem ich weiterarbeiten kann.
Vielen Dank schonmal im Voraus!!!
Viele Grüße,
Jasmin

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VLookUp- Laufzeitfehler 1004
26.03.2016 15:01:46
RPP63
Moin!
Es gibt kein Application.VLookup,
sondern nur die WorksheetFunction.VLookup
Gruß Ralf

AW: VLookUp- Laufzeitfehler 1004
26.03.2016 15:07:29
Jassi
Hey,
Danke für die Antwort.
Das hatte ich die ganze Zeit auch so stehen, aber damit funktioniert die ganze Sache leider auch nicht.
VG

falsche Reihenfolge!
26.03.2016 15:21:18
RPP63
Die VBA-Hilfe sagt:
WorksheetFunction.VLookup(Suchkriterium, Suchmatrix, Spalte, Bereich_Verweis)
Du hast die ersten beiden Argumente vertauscht.
Gruß Ralf

AW: falsche Reihenfolge!
26.03.2016 15:24:25
Jassi
Hallo Ralf,
leider ist es das auch nicht.
Die Reihenfolge ist richtig. Es soll nach den Zellen in Spalte 1 im Tabellenblatt 5 suchen.
Gruß,
Jasmin

Anzeige
Wenn Du meinst …
26.03.2016 15:30:26
RPP63
In Deiner Klammer steht erst ein Range, dann SU
Richtig wäre anders herum.
Bin raus.
Frohe Ostern wünscht Ralf

Achtung!
26.03.2016 15:34:27
RPP63
Dein Suchbereich besteht ja nur aus einer Spalte.
In diesem Bereich kann natürlich nicht nach der fünften Spalte gesucht werden, weil es die nicht gibt!
Mache Dich mal mit dem SVerweis vertraut.
Gruß Ralf

welchen Wert hat denn letzteZeile
26.03.2016 15:34:51
Matthias L
Hallo
Vermutlich 0 ?
Gruß Matthias

AW: welchen Wert hat denn letzteZeile
26.03.2016 15:38:01
Jassi
Hallo Matthias,
letzteZeile hat den Wert 8760.
Gruß,
Jasmin

Nochmal:
26.03.2016 15:42:10
RPP63
Dein Suchbereich hat nur eine Spalte!
In einem einspalten Bereich kann man sich schwerlich den Wert der fünften Spalte ausgeben lassen.
Meine Anmerkung bzgl. der Reihenfolge der Argumente gilt weiterhin.
Bei einem so großen Bereich solltest Du zudem den Bereich en bloc mit der Formel beschreiben und die Formel gegen den Wert tauschen.
Dann wird die Berechnung nur einmal angestoßen.
(Oder Du berechnest innerhalb eines Arrays)
Gruß Ralf

Anzeige
AW: Nochmal:
26.03.2016 15:50:57
Jassi
@Ralf, ich weiß gerade ehrlich gesagt nicht was du meinst.
Das Suchkriterium ist eine Spalte... VBA soll mir für jede Zeile dieser Spalte einen Wert ausspucken.
SU ist auch ein Range. Dieser geht in Worksheet(5) von Spalte 1 bis Spalte 6. Hier soll mir die 5. Spalte wieder gegeben werden.
Danke und Gruß,
Jasmin

Aufgedröselt:
26.03.2016 15:57:24
RPP63
Deine Codezeile:
Cells(i, 11) = Application.VLookup(Range(Cells(i, 1), Cells(letzteZeile, 1)), SU, 5, False)
ändere ich erst mal in die richtige Reihenfolge unter Verwendung von WorksheetFunction
Cells(i, 11) = WorksheetFunction.VLookup(SU, Range(Cells(i, 1), Cells(letzteZeile, 1)), 5, False)
Dein Bereich besteht nur aus einer Spalte:
Range(Cells(i, 1)), Cells(letzteZeile, 1))
Wie willst Du da den Wert der nicht vorhandenen fünften Spalte übergeben???
Richtig ist einzig:
Cells(i, 11) = WorksheetFunction.VLookup(SU, Range(Cells(i, 1), Cells(letzteZeile, 5)), 5, False)
Gruß Ralf

Anzeige
letzteZeile = 0
26.03.2016 16:08:36
Matthias L
Hallo
Du willst LetzteZeile schon benutzen, obwohl noch kein Wert in der Variable steht
Userbild
letzteZeile = Worksheets(5).Cells(Rows.Count, 1).End(xlUp).Row
Diese Zeile muss aber unter die Deklaration
Sub Sonnenuntergang_Sonnenaufgang()
Dim i As Integer
Dim SU As Variant
Dim letzteZeile As Integer
letzteZeile = Worksheets(5).Cells(Rows.Count, 1).End(xlUp).Row
Worksheets(5).Range(Cells(2, 1), Cells(letzteZeile, 1)).NumberFormat = "DD.MM.YYYY"
Worksheets(4).Range(Cells(2, 1), Cells(letzteZeile, 1)).NumberFormat = "DD.MM.YYYY"
Gruß Matthias

Anzeige
AW: letzteZeile = 0
27.03.2016 11:56:17
Jassi
Hallo Matthias,
ja sorry das letzteZeile muss natürlich davor stehen. Mein Fehler.
Funktioniert aber trotzdem nicht.
Könnte es eventuell auch an den Datumformat des Suchkriteriums und der Matrix liegen?
Frohe Ostern und Grüße,
Jasmin

probier das .NumberFormat = "DD/MM/YYYY"
27.03.2016 12:08:50
Matthias L
Hallo
Habe jetzt keine Zeit mehr, sorry.
Gruß Matthias

AW: letzteZeile = 0
27.03.2016 14:21:48
Jassi
Hallo Matthias,
ja sorry das letzteZeile muss natürlich davor stehen. Mein Fehler.
Funktioniert aber trotzdem nicht.
Könnte es eventuell auch an den Datumformat des Suchkriteriums und der Matrix liegen?
Frohe Ostern und Grüße,
Jasmin

Alle bisherigen Vermutungen unzutreffend, ...
26.03.2016 18:23:49
Luc:-?
…Folks; :-]
ich gehe mal davon aus, dass Jasmin das schon richtig argumentiert, nur eben leider wie eine ZellFml-Fkt in einer MatrixFml, was hier aber nicht fktioniert!
1. Jede Fkt, die im Container WorksheetFunction enthalten ist, sollte auch nur als objektbildende Eigenschaft von Application fktionieren, wird nur nicht vom VBE-Intellisense unterstützt.
2. SU enthält eine ausreichende SpaltenZahl.
3. letzteZeile wird zuvor belegt.
4. Entscheidend: Eine WorksheetFunction fktioniert nur so, wie sie auch pgmmiert wurde - die Unterstützung durch die Xl-Steuerung entfällt. Deshalb muss ein skalares Element auch stets skalar angegeben wdn.
Das ist in deinem Konstrukt nicht der Fall, Jasmin,
was aber womöglich nur ein Versehen deinerseits ist, weil ja sonst der ganze Zyklus nicht erforderlich wäre. Die Zeile muss also richtig eher wie folgt lauten:
Cells(i, 11) = Application.VLookup(Cells(i, 1), SU, 5, False)
Feedback nicht unerwünscht! Gruß + FrOst, Luc :-?
Besser informiert mit …

Anzeige
AW:
26.03.2016 20:54:47
Gerd L
3. letzteZeile wird zuvor belegt,
aber erst nach der ersten Verwendung dieser Variable im eingangs gezeigten Code, Folker:-)
Gruß Gerd

Na und! Steht doch noch vor SU-Belegung! owT
26.03.2016 22:34:13
Luc:-?
:-?

Ich hatte mich auf die Fml konzentriert, ...
27.03.2016 13:05:55
Luc:-?
…denn darum ging's primär, Gerd,
ihren anderen dummen Fehler hatte ich deshalb nicht bemerkt, denn da ist ja dann schon Schluss.
Luc :-?

AW: Alle bisherigen Vermutungen unzutreffend, ...
27.03.2016 10:54:08
Jassi
Zuerst einmal danke für die ganzen Rückmeldung!!:)
Leider funktioniert mein Sub immernoch nicht.
@Luc: dein Lösungsvorschlag habe ich auch ausprobiert und erscheint mir auch schlüssig. Leider bekomme ich dann immer noch Fehler. "Anwendungs- oder objektdefinierter Fehler"
PS: Die Deklarierung der letzteZeile mache ich die ganze Zeit schon so und funktioniert auch bei allen anderen Subs wunderbar.
LG Jasmin

Anzeige
VLookUp auf Worksheet
27.03.2016 19:51:42
Michael
Hi zusammen,
der 1004 kommt doch immer, wenn die Bezüge nicht richtig gesetzt sind...
Ich hab's jetzt mal "ganz sauber" kodiert ...
Option Explicit
Sub Sonnenuntergang_Sonnenaufgang()
Dim i&, lZ4&, lZ5&   ' & = "as long"
Dim sh4 As Worksheet, sh5 As Worksheet
Dim SU As Range ' !!! ****************
Set sh4 = Worksheets(4)
Set sh5 = Worksheets(5)
lZ4 = sh4.Cells(sh4.Rows.Count, 1).End(xlUp).Row
lZ5 = sh5.Cells(sh5.Rows.Count, 1).End(xlUp).Row
sh4.Range("A1:A" & lZ4).NumberFormat = "DD.MM.YYYY"
sh5.Range("A1:A" & lZ5).NumberFormat = "DD.MM.YYYY"
Set SU = sh5.Range("A2:F" & lZ5)
For i = 2 To lZ4
sh4.Cells(i, 11) = Application.VLookup(sh4.Cells(i, 1), SU, 5, False)
Next i
End Sub
... mit ZWEI "letzten Zeilen" für *jedes* Blatt, mit SU als Range statt als Variant/Array, Luc:-?s Hinweis Nr. 4 usw., und es scheint zu tun, zumindest so, wie ich die Frage verstanden habe.
Die Datei: https://www.herber.de/bbs/user/104624.xls
Schöne Grüße,
Michael

Anzeige
AW: VLookUp auf Worksheet
28.03.2016 16:22:27
Jassi
Hallo Michael,
DANKE!!
Ja genau das lag an dem Range...
Dachte ich kein en Range auch über Range(Cells(x,y),Cells(x,y)) definieren aber scheinbar geht das nicht!!
Schöne Rest-Ostern noch
Jasmin

AW: VLookUp auf Worksheet
28.03.2016 17:15:12
Michael
Hi Jassi,
doch, das geht schon, aber es muß *überall* die Referenz auf das beteiligte Blatt drinstehen, ob wie hier sh4.Cells(i, 1) oder eben:
statt: Range(Cells(x,y),Cells(x,y))
dann: Blatt.Range(Blatt.Cells(x,y),Blatt.Cells(x,y))
Aber in diesem Fall geht halt nur EINE Zelle, siehe Antwort 4 von Luc:-?
Schöne Grüße zurück,
Michael

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige