Noch immer VLookUp
05.08.2005 11:00:29
Thomas
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