Zur Zelle in Abhängigkeit vom Datum Scrollen

Hallo an alle,

kann man einer Excel (2007) Datei beim öffnen beibringen das sie immer bis zur Zeile mit dem aktuellen Datum Scrollt ?

Also ich schreibe meine Arbeitszeiten fortlaufend in einer Tabelle, im ersten Feld erscheint das Datum (vortlaufend nach unten) und dahinter Beginn und Ende der Arbeitszeit …

nun soll die Tabelle natürlich nicht jedesmal beim Öffnen am 01.01.2014 anfangen sondern bereits einige Zeilen nach unten gescrollt sein bis zum heutigen Datum.

Gibt es da einen Trick.

Danke Stefan

Geht mit VBA
Hallo Stefan,

kennst du dich ein bisschen mit VBA aus? Wen nicht, hier eine Kurzanleitung:
Öffne deine Excel-Datei
Drücke Alt-F11. Der VBA Editor öffnet sich.
Im Fenster links oben gibt es einen Eintrag „DieseArbeitsmappe“.
Mach einen Doppelklick darauf.
In das große Fenster rechts kopiere jetzt folgende Code:

Option Explicit

Private Sub Workbook\_Open()
 Dim z As Long

 With Sheets("Tabelle1") ' Hier den richtigen Blattnamen angeben
 z = .Range("A:A").Find(Date).Row ' Hier die richtige Spalte angeben
 .Range("A1").Select
 ActiveWindow.SmallScroll down:=z - 1
 End With
End Sub

In der Zeile, die mit „With Sheets“ beginnt musst du das „Tabelle1“ in den Anführungszeichen durch den Namen deines Tabellenblattes ersetzen.
In der Zeile darunter musst du das A:A durch die Spalte ersetzen, in der deine Datums (heißt das so?) stehen, also wenn sie bei dir in Spalte C stehen, schreibst du dort C:C rein.
Jetzt kannst du den VBA-Editor schließen.
Speichere die Datei ab und schließe sie.
Wenn du sie wieder öffnest, sollte das Tabellenblatt immer zum aktuellen Datum springen (wenn es drin steht, sonst gibts einen Fehler).

Gruß, Andreas

Hallo
Du könntest dir die Überschrift fixieren, so das sie immer sichtbar ist
Dort einen Hyperlink platziert und du bist jederzeit mit einem Klick dort wo du hin willst.

Folgender Hyperlink sucht in Spalte A das aktuelle Datum und verlinkt dorthin:
=HYPERLINK("#Tabelle1!A"&VERGLEICH(HEUTE();A:A;1))

oder incl Anzeige vom Datums

=HYPERLINK("#Tabelle1!A"&VERGLEICH(HEUTE();A:A;1);TEXT(INDIREKT(„A“&VERGLEICH(HEUTE();A:A;1));„TT.MM.JJJJ“))

Gruß Holger

Hallo,

also ich habe das mit einfachen Funktionen unter OpenOffice calc realisiert, das läuft eigentlich auch unter Excel so (da hatte ich das auch schon, ist aber Jahre her):

Also, gehen wir davon aus, Deine Tabelle beginnt in Zeile 9 (Kopfzeilen und so weiter, ansonsten die Zeilen halt anpassen).

In der ersten Zeile, also 9, gibtst Du das Beginndatum ein. Ich habe dazu die Zelle B9 gewählt, damit in A9 der Wochentag erscheint. Warum später mehr.

In die Zelle B10 folgende Funktion:

=WENN(C10<>"";B9+1;"")

Das prüft, ob Du eine Arbeitszeit eingegeben hast, wenn ja springt es einen Tag weiter.
In A10:

=WENN($B10<>"";WOCHENTAG($B10);"")

Das setzt den Wochentag in Abhängigkeit des Datums.

Nun die Formeln einfach bis Zeile 365 herunter ziehen.

In C10 gibst Du den Arbeitsbeginn ein…

So springt das immer weiter und schreibt automatisch das Datum fort.

Warum den Wochentag? So kannst Du ohne größere mathematischen Winkelzüge zum Beispiel die Wochenenden ausschließen.

Musst Du halt eine kleine Verschachtelung machen: Wenn Ax ist „Samstag“…

Warum ich keine absolute Spalte gemacht habe (also $A)? Falls mal eine Spalte dazu kommt, stimmen die Formeln immer noch.
Warum die Zeile ohne $? das würde das Kopieren nicht erlauben.

Ich würde die Spalten A und B schützen, sonst vertippselt man sich mal und das System ist im berühmten Eimer…

Also unter Oo klappt das perfekt, Du kannst dann sogar mit diesen Abhängigkeiten auch die Arbeitszeit in Stunden/Minuten berechnen lassen oder zum Beispiel Mehr- oder Minderstunden. Das Prinzip ist immer das Gleiche,auch bei Ecxel.

Das ist eine Sache, die keine VBA-Kenntnise benötigt, deshalb habe ich das absichtlich auch so gemacht, weil einfach.

Wenn es Dir hilft, freut es mich…

Gruß

Salü Andreas

Ich arbeite mit Tabelle1 und Spalte A:A - Excel 2010
Wenn die Datei geöffnet wird, erhalte ich folgende Fehlermeldung:

Laufzeitfehler ‚91‘:
Objektvariable oder With-Blockvariable nicht festgelegt.

Beim Debuggen wird die folgende Zeile markiert:

z = .Range(„A:A“).Find(Date).Row

Ich habe in der Hilfe zu Find nachgeschaut, aber keine Hilfe gefunden. Kannst Du weiterhelfen?

Vielen Dank und viele Grüsse Niclaus

Hallo Andreas

Ich habe den „Fehler“ bei mir gefunden. Ich habe die Spalte A mit Formeln „aufgebaut“:

A1 01.01.2015
A2 =A1+1 usw.

Wenn ich überall Werte einsetze, klappt es mit dem Makro. Also:

A1 01.01.2015
A2 02.01.2015 usw.

Viele Grüsse Niclaus

Nicht ganz sauber
Moin, Niclaus,

das klappt nur, wenn in der Spalte das Tagesdatum vorhanden ist. Ansonsten wie gehabt Laufzeitfehler 91.

Ich suche schon seit längerem nach einem Weg, solche Fehler abzufangen, aber da geht absolut nichts (zB Not IsNull). Mir scheint, die .Row arbeitet nur dann sauber, wenn der Find ein echtes Resultat liefert.

Noch’n Versuch: Find liefert laut Hilfe ein Double als Rückgabewert. Die Zuweisung auf eine Variable rc = .Range(„A:A“).Find(Date) scheppert genauso. Watt nu?

Gruß Ralf

Danke Niclaus und Ralf,
ich war heute unterwegs. Aber ihr habt’s ja auch ohne mit rausgefunden. Hätte ich übrigens nicht so schnell hinbekommen.

PS: Doch, Ralf, ich hab gekuckt.

Gruß, Andreas

PPS: Melde mich für 2 Wochen nach Malta ab.

1 Like

Gruß, Andreas
PPS: Melde mich für 2 Wochen nach Malta ab.

Hallo Andreas
In Malta gibt es genug Malteser! Hier im Excel-Forum brauchen wir solche!
Grüsse und schöne Zeit Niclaus

1 Like

doch noch gefunden, NOTHING heißt das Zauberwort. Wenn
Range.Find nichts liefert, wird NOTHING zurückgegeben. Damit
lässt sich der Laufzeitfehler ausbremsen:

Aber
http://www.karikatur-museum.de/_user/customer/7/imag…

Hallo Ralf

Danke für die Lösung des Laufzeitfehlers. - „Aber“ hab ich gelesen. Mein Aber ist Max Raabe. - Aber nun zum Ernst der Lage.

Ich beschäftige mich noch mit dem Makro von Andreas

Sub AktDatumFinden()
 Dim z As Long
 With ActiveSheet
 z = .Range("A:A").Find(Date, LookIn:=xlValues).Row
 .Range("A1").Select
 ActiveWindow.SmallScroll down:=z - 1 
 End With
 Cells(z, 1).Select
End Sub

Mit „LookIn:=xlValues“ werden nun auch Datümer gefunden, die mit einer Formel gebildet werden. ABER:

Heute ist ja der 11.05.2015. Mit dem obigen Makro wird in meiner Spalte A der 05.11.2015 gefunden. Egal ob die Spalte A feste Werte enthält oder Formeln.

Ich habe gegoogelt und viele Hinweise auf die Probleme von Date in Find(Date, LookIn:=xlValues) gefunden, aber keine Lösung. Es muss am Format von Date liegen. Weisst Du mehr?

Vielen Dank und viele Grüsse
Niclaus

Hi, Niclaus,

tut mir leid, ich kann das nicht nachvollziehen. In welcher Form ich den 5.12.2015 auch anlege, mein Excel 2007 findet keine Übereinstimmung.

Gruß Ralf

In welcher
Form ich den 5.12.2015 auch anlege, mein Excel 2007 findet
keine Übereinstimmung.

Hallo Ralf

Ich habe folgende Zeilen in das Makro eingefügt:

am Anfang:
 With ActiveSheet
 .Range("A:A").NumberFormat = "mm/dd/yyyy"

und ganz am Ende:
 .Range("A:A").NumberFormat = "dd/mm/yyyy"

So klappt es.
Grüsse Niclaus

Hi Niclaus,

.Range(„A:A“).NumberFormat = „mm/dd/yyyy“

ich hab auch in die Richtung gebohrt und versucht, die WIndows-Sprache auf Englisch umzustellen, da trickst mich das BS aber aus: Sobald ich die Exceldatei zum Test öffne, schaltet sich das EN auf DE um, schließe ich Excel, steht da wieder EN. Diese eingebaute Intelligenz Fürsorglichkeit in Windows geht mir gehörig auf den Sack.

Gruß Ralf