Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
648to652
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
648to652
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Noch immer VLookUp

Noch immer VLookUp
05.08.2005 11:00:29
Thomas
Hallo!
Leider habe ich mein Vlookup-Problem trotz tatkräftiger Unterstützung des Forums noch immer nicht lösen können. Zunächst mein Code:

Private Sub CheckBox5_Click()
If CheckBox5.Value = True Then
Range("aq16:aq434").ClearContents
CheckBox6.Value = False
CheckBox7.Value = False
On Error Resume Next
For n = 16 To 434
erg = Application.WorksheetFunction.VLookup(Cells(n, 37), Worksheets("Senior Debt").Range("K4:N174"), 4, FALSCH)
If erg Then Cells(n, 43) = erg
Next n
End If
End Sub

Die vorstehende Prozedur läuft im Blatt "Calc" ab. Dort wird das in den Zellen 16 bis 434 stehende Datum ausgelesen (beginnt mit dem 01.01.2006 und endet mit dem 012.12.2017) und mit den Datumsangaben im Blatt "Senior Debt" (Zeilen K4 bis K174) verglichen. Sofern das Datum übereinstimmt, soll ein Betrag aus dem Blatt "Senior Debt" in das Blatt "Calc" übertragen werden. Der Vergleich funktioniert aber leider nur so lange korrekt, bis das erste übereinstimmende Datum gefunden und der entsprechende Betrag in das Blatt "Calc" übertragen wurde. Danach werden alle Zellen in Spalte 43 des Blattes "Calc" so lange mit einem Betrag gefüllt (obwohl bei weitem nicht alle Daten übereinstimmen), wie die Spalte K des Blattes "Senior Debt" Datumsangaben aufweist.
Gordon hatte mir bereits den Tipp gegeben, den letzten Parameter in der Vlookup-Anweisung von "0" auf "FALSCH" zu ändern, was ich auch getan habe. Hilft aber nichts. Er wies ferner darauf hin, dass das Problem in einer fehlenden (das ist der Fall) oder fehlerhaften Dimensionierung von "erg" liegen könnte. Seine Antwort im Detail:
m.E. zwei mögliche Ursachen:
a) letzter Parameter '0'
erg = Application.WorksheetFunction.VLookup(Cells(n, 37), Worksheets("Senior Debt").Range("K4:N174"), 4, 0)
Lies mal die Onlinehilfe für SVERWEIS, denke, der Wert muss auf FALSCH
b) If erg Then Cells(n, 43) = erg
Wie ist erg dimenisioniert ? Nicht bzw. als Variant ?
Dann ist die if-Abfrage, nachdem einmal ein Wert gefunden wurde, immer erfüllt !
Ich habe (so weit ich das beurteilen kann) schon alle möglichen Dimensionierungen ausprobiert, ohne das es geholfen hat. Hat von euch jemand eine Idee, was ich falsch mache?
Vielen Dank für eure Hilfe,
Thomas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Noch immer VLookUp
05.08.2005 11:17:42
Matthias
Hallo Thomas,
in VBA heißt es "False" statt "FALSCH".
Gruß Matthias
AW: Noch immer VLookUp
05.08.2005 11:20:28
Thomas
Hallo Matthias,
vielen Dank für den Hinweis. Ändert aber leider nichts am Ergebnis!
Gruß
Thomas
AW: Noch immer VLookUp
05.08.2005 11:28:24
Matthias
Hallo Thomas,
füge mal mal im Code in der Schleife ein:

Debug.Print Application.WorksheetFunction.VLookup(Cells(n, 37), Worksheets("Senior Debt").Range("K4:N174"), 4, False)

was kommen denn für Werte?
Es liegt bestimmt an der Abfrage "If erg Then", das klingt zu einfach...
Gruß Matthias
AW: Noch immer VLookUp
05.08.2005 11:38:39
Erich
Hallo Thomas und Matthias,
sehe ich auch so: "If erg then" ist zu einfach.
Wenn VLookup einen Wert nicht findet, gibt es einen Fehler, der wird durch "on error resume next" übergangen, der vorher in erg gespeicherte Wert ändert sich nicht und wird in die aktuelle Zeile übertragen - bis VLookup wieder einen Wert findet.
Um nicht viel am Code zu ändern:
Füge ein Zeile vor VLookup ein:
erg = "#!nix!#"
und eine Zeile unter VLookup müsste es dann heißen:
If erg "#!nix!#" Then Cells(...) = erg
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Noch immer VLookUp
05.08.2005 11:47:18
Erich
Hallo Thomas,
etwas sauberer wäre (ohzne die erg-Vorbelegung):
Statt
If erg then Cells(...) = erg
neu:
If Err = 0 Then Cells(n, ...) = erg Else Err = 0
Damit wird abgefragt, ob beim VLookup ein Fehler aufgetreten ist. Wenn nein, wird cells(...) belegt, wenn ja, wird der Fehler wieder "ausgenullt".
Wichtig könnte nach der Schleife ein "On Error GoTo 0" sein!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Funktioniert
05.08.2005 12:01:28
Thomas
Erich!
Du bist ein Held. Die Err-Anweisung funktioniert! Der GoTo-Zusatz ist übrigens überflüssig.
Vielen Dank!!
Thomas
AW: Funktioniert
05.08.2005 12:12:32
Erich
Hallo Thomas,
schön, dass es funzt!
Was meinst du mit "GoTo-Zusatz überflüssig"? War meine Bemerkung überflüssig, weil du die Zeile schon hattest, oder hältst du die Anweisung für überflüssig?
Im zweiten Fall möchte ich dir widersprechen. Man sollte nach "on error resume next" normalerweise immer die automatische VBA-Fehlerbehandlung wieder einschalten - sonst können die merkwürdigsten Dinge passieren.
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Funktioniert
05.08.2005 12:23:15
Thomas
Hallo Erich!
Ich bezog mich tatsächlich auf die Anweisung im Allgemeinen. Aber du hast mit deinem Hinweis natürlich recht.
Vielen Dank nochmals für deine Unterstützung.
Gruß
Thomas
AW: Noch immer VLookUp
05.08.2005 11:53:13
Thomas
Hallo Erich!
Wir nähren uns der Lösung. Habe deinen Code eingefügt. Nun ist es allerdings so, dass in alle Zellen, bei denen keine Datumübereinstimmung wie beabsichtigt kein Betrag, sondern "!nix!" erscheint. Der Teil funktioniert somit hervorragend. Das Probelm ist nur, das die Zellen, bei den aufgrund einer Datumsübereinstimmung eigentlich ein Betrag eingetragen werden müsste, leer bleiben, d.h. die Betragsübertragung nicht erfolgt! Hast du eine Idee, was nun falsch läuft?
Gruß
Thomas
Anzeige
AW: Noch immer VLookUp
05.08.2005 12:06:39
Erich
Hallo Thomas,
da scheint es zwei Probleme zu geben:
1.
Nach meinem Code wird nur dann etwas in Cells(...) geschrieben, wenn erg #!nix!#" ist. Der Dummy-Wert kann also nie erscheinen. Wie kommst du überhaupt auf "!nix!" (ohne "#")?
Wenn du meinen zweiten Beitrag nimmst, erledigt sich dieses Problem von selbst.
2.
Wenn Vlookup einen Datum findet, wird der Wert von VLookup in Cells)...) übertragen. Bis du sicher, dass in der richtigen Zeile in Spalte N von "Senior Debt" ein Wert steht?
Grüße von Erich aus Kamp-Lintfort
AW: Noch immer VLookUp
05.08.2005 11:42:03
Thomas
Hallo Matthias,
da ich nicht wusste, ob du dich auf die FOR- oder die IF-Schleife beziehst, habe ich beide Varianten versucht. Hilft auch nichts. Im Übrigen bin ich mir auch sicher, dass es an der IF-Schleife liegen muss.
Gruß
Thomas
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige