AW: Markierung der Datensätze zum Teil unvollständig
24.03.2010 15:39:40
IngGi
Hallo Reiner,
mit der Anzahl der Datensätze hat das Problem nichts zu tun. Die Ursache steckt im Codeausschnitt weiter unten. In der Zeile
varRowLetzter = Application.Match(LDate, Bereich, 0)
soll der Variablen die letzte Zeile für den betreffenden Monat zugewiesen werden. Wenn das letzte Datum des Monats allerdings mehrfach vorkommt, findet die Match-Funktion leider nicht die letzte, sondern die erste Zeile mit diesem Datum. Daher muss die Variable varRowLetzter in der anschließenden Do...Loop-Schleife entsprechend erhöht werden, so dass sie auf die letzte Zeile des Monats zeigt.
Und hier liegt der Fehler. In deinem Code vergleichst du in der Do-Codezeile die Zeile auf die varRowLetzter zeigt mit der Variablen Letzter. In der Variablen Letzter ist allerdings immer der letzte Tag des Monates enthalten, also der 30. oder 31. (bis auf Februar). Wenn dieser letzte Tag aber nicht in den Daten enthalten ist, sondern - wie im Januar 2006 - die Daten nur bis zum 29. gehen, dann geht der Vergleich schief. Die Variable varRowLetzter wird nicht erhöht und die Markierung greift dementsprechend zu kurz, d.h. es werden zu wenige Zeilen markiert.
Ich habe die Codezeile im folgenden Ausschnitt nun so verändert, dass nicht mehr mit der Variablen Letzter verglichen wird, sondern je zwei untereinander stehende Zellen werden direkt miteinander verglichen.
For LDate = Letzter To Erster Step -1
varRowLetzter = Application.Match(LDate, Bereich, 0)
If IsNumeric(varRowLetzter) Then
Do Until Bereich.Cells(varRowLetzter + 1, 1) Bereich.Cells(varRowLetzter, 1)
varRowLetzter = varRowLetzter + 1
Loop
Exit For
End If
Next LDate
Zu deinem anderen Problem:
Die GoTo-Methode bewirkt automatisch, dass die oberste Zelle ganz links oben im Fenster steht. Füge unter der betreffenden Codezeile einfach noch ein
ActiveWindow.SmallScroll ToLeft:=3
ein, dann wird anschließend wieder zur Spalte A zurückgescrollt.
Gruß Ingolf