VBA VLookUp Zielmatrix mit Cells falsch
21.07.2017 16:13:55
Johannes
nach jahrelangem mitlesen muss ich mich nun selbst fragestellend an euch wenden.
Innerhalb einer Funktion tritt beim SVerweis/VLookUp ein seltsamer Fehler auf, dessen Herkunft _
mir völlig schleierhaft ist. Läuft die
Function das erste mal durch, geht alles problemlos. Bei einem weiteren mal wird ein _
Laufzeitfehler 1004 ausgeworfen "Anwendungs- oder objektdefinierter Fehler", sofern der Wert in _
der letzten Zelle der Suchmatrix gleich dem Wert beim vorherigen Durchlauf ist. Ändert man den Wert in der letzten Zelle der Suchmatrix, so gibt es keine Fehlermeldung.
Ursache der Fehlermeldung ist offenbar die Ermittlung des Wertes der letzten Zelle der _
Suchmatrix. Fährt man mit dem Cursor im Code über die Variablen, so erscheinen alle Werte _
korrekt. In der Suchmatrix (im Code Beispiel Fett hinterlegt) bei "Cells" wird jedoch bei der zweiten Cell nicht der in der Zelle hinterlegte Wert der Zelle angezeigt, sondern "-31".
Zunächst konnte ich den Fehler durch das Einfügen folgenden Codes umgehen, das funktioniert _
aber aus welchem Grund auch immer nicht mehr:
For i1 = s1 To e1
Sheets(start_sheet1).Cells(lr1, c1) = Sheets(start_sheet1).Cells(lr1, c1)
Next i1
Werte der Variablen:
start_sheet1 = 9
ziel_sheet1 = 3
start_spalte = "Abgleich2"
ziel_spalte = "Plan Beginn Projekt"
e1 = 7
s1 = 3
j1 = Juni
k1 = 2017
o1 = Juni2017
a1 = 8
b1 = 8
c1 = 24
d1 = 25
i1 = 4
lr1 = 7
Function Sverweis(start_sheet1 As Integer, ziel_sheet1 As Integer, start_spalte As String, _
ziel_spalte As String)
Dim e1, s1, j1, k1, o1 As String, a1, b1, c1, d1, i1, lr1 As Integer
j1 = Format(Date + DateDiff("d", Date, Date - Day(Date)) - 1, "MMMM") 'Vormonat
k1 = Format(Date + DateDiff("d", Date, Date - Day(Date)) - 1, "YYYY") 'zugehöriges Jahr
o1 = j1 & k1
a1 = Sheets(start_sheet1).Rows(1).Find(start_spalte).Column
b1 = Sheets(ziel_sheet1).Rows(1).Find(start_spalte).Column
c1 = Sheets(start_sheet1).Rows(1).Find(ziel_spalte).Column
d1 = Sheets(ziel_sheet1).Rows(1).Find(ziel_spalte).Column
s1 = Sheets(ziel_sheet1).Columns(a1).Find(o1).Row
e1 = Sheets(ziel_sheet1).Columns(b1).Find(What:=o1, SearchDirection:=xlPrevious).Row
lr1 = Sheets(start_sheet1).Columns(c1).End(xlDown).Row
For i1 = s1 To e1 ' _
Errorhandler für willkürlichen -31 Fehler
Sheets(start_sheet1).Cells(lr1, c1) = Sheets(start_sheet1).Cells(lr1, c1)
Next i1
On Error GoTo Weiter
For i1 = s1 To e1
Sheets(ziel_sheet1).Cells(i1, d1) = Application.WorksheetFunction.VLookup(Sheets(ziel_sheet1). _
_
Cells(i1, b1), Sheets(start_sheet1).Range(Cells(1, a1), Cells(lr1, c1)), (c1 - a1 + 1), _
False)
Weiter:
Next i1
End Function
Sub main()
Sverweis 9, 3, "Abgleich2", "Plan Beginn Projekt"
End Sub
Ich hoffe ich konnte das am Freitag Nachmittag einigermaßen verständlich und detailliert ausdrücken.
Beste Grüße
Johannes