Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1148to1152
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

Markierung der Datensätze zum Teil unvollständig

Markierung der Datensätze zum Teil unvollständig
reiner
Hallo Leute,
https://www.herber.de/bbs/user/68780.xls
wenn in der Beispieldatei das Makro ausgeführt wird, werden alle einem gewählten Monat zugeordneten Datensätze korrekt markiert, sofern die Anzahl der Datensätze zwischen 10 und 99 liegt. Sind es weniger als 10 oder mehr als 99 werden die letzten Datensätze nicht markiert.
Ich will aber dass unabhängig von der Anzahl immer alle Datensätze des gewählten Monats markiert werden.
Wie kann dieses Verhalten verhindert werden?
U.a. werden die Datensätze dieser Zeiträume falsch markiert:2006-1; 2009-11; 2009-12
Die Daten in den Spalten "A-C" sowie ab Spalte "E" musste ich löschen da die Dateigröße zum Upload auf ca. 300KB begrenzt ist.
Woran mag es liegen das die Spalte "D" nach dem Markieren an den linken Bildschirmrand rutscht und wie lässt sich dieses Verhalten verhindern?
mfg
reiner

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Woran mag es liegen ... ,True !
24.03.2010 15:38:45
Matthias
Hallo
Woran mag es liegen das die Spalte "D" nach dem Markieren an den linken Bildschirmrand rutscht und wie lässt sich dieses Verhalten verhindern?

If IsNumeric(varRowErster) Then
Application.Goto .Range(Bereich.Cells(varRowErster, 1), _
Bereich.Cells(varRowLetzter, 1)) , True
Else
Nimm das ,True raus.
Gruß Matthias
AW: Woran mag es liegen ... ,True !
24.03.2010 17:01:42
reiner
hallo matthias
das ist leider nicht die Lösung, schau doch mal in den Vorschlag von Ingolf - damit klappts
mfg
reiner
die Antw. lass ich so nicht gelten, schau hier ...
24.03.2010 18:30:05
Matthias
Hallo
Meine Antwort auf Deine Frage bezog sich darauf (hatte ich extra kursiv gesetzt)
Woran mag es liegen das die Spalte "D" nach dem Markieren an den linken Bildschirmrand rutscht und wie lässt sich dieses Verhalten verhindern?


Nun nimm mal eine neue Tabelle.
Setze A1 als aktive Zelle
Lass nun diese beiden Markros laufen ( einzeln! - aber immer vorher A1 selektieren )

Sub OhneTrue()
Application.Goto Range("D66")
End Sub
Sub MitTrue()
Application.Goto Range("D66"), True
End Sub
Was passiert bei ,True und was passiert ohne ,True ?
Ich sehe meine Antwort daher als absolut korrekt an.
Gruß Matthias
Anzeige
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
Anzeige
AW: Markierung der Datensätze zum Teil unvollständig
24.03.2010 17:03:50
reiner
hallo Ingolf,
das funktioniert wunderbar
mfg
reiner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige