Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
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

Zelle mit aktuellem Datum markieren

Zelle mit aktuellem Datum markieren
25.11.2013 23:04:03
mike49
Hallo zusammen,
ich habe eine Tabelle mit einer Jahresübersicht im Querformat.Im Bereich B6:AF6 stehen die festen Zahlen 1 bis 31 für die Tage.
In den Zeilen darunter sind die Monate für Stundeneinträge angeordnet.
Wie kann man erreichen, dass beim Öffnen der Mappe die Zelle des aktuellen Tages für den Stundeneintrag angesprungen und hervorgehoben wird.
Es müsste z.B. am heutigen Tag (25.11.) die Zelle Z39 für den Stundeneintrag angesprungen und hervorgehoben werden.
Kann man das machen? VBA?
Zur besseren Veranschaulichung lade ich die Datei mal hoch.Vielleicht nimmt sich jemand der Sache an.
https://www.herber.de/bbs/user/88256.xlsm
Gruß
mike49

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du lässt ja wohl nicht locker, ...
26.11.2013 00:18:46
Luc:-?
…Mike; ;-X
hoffentlich hast du deine Mappe nun nicht immer wieder neu hochgeladen, denn das wäre inzwischen rekordverdächtig (meine UpLoads mitgerechnet) und wohl kaum im Sinne des Betreibers!
Auch deshalb bekommst du jetzt nur eine Anleitung von mir: ;-]
1. VBE öffnen und DieseArbeitsmappe im Verzeichnisbaum auswählen und öffnen.
2. Im linken KopfMenü der großen weißen Fläche rechts Workbook auswählen → standardmäßig wir sofort der Rahmen der Workbook_Open-Prozedur angelegt.
3. In die Leerzeile zwischen Kopf und Fuß derselben schreibst du Call StartZelle.
4. In eines deiner normalen Module kopierst du folgd PgmCode:
Sub StartZelle()
Const zlOff As Long = 2, adMonBer$ = "A7:A40"
Dim axDatum As Variant, monBer As Range
axDatum = Split(Format(Now, "yyyy-m d"))
Set monBer = Range(adMonBer)
monBer.Cells(WorksheetFunction.Match(CLng(CDate(axDatum(0) & "-1")), _
monBer, 0)).Offset(zlOff, CInt(axDatum(1))).Activate
Set monBer = Nothing
End Sub
Die Konstante zlOff habe ich angelegt, falls du wieder mal Zeilen einfügen willst, dann musst du nur ihren Wert ändern. Zusätzliche Spalten vor den Tagen sind allerdings nicht berücksichtigt.
Die Vorgehensweise über eine separate, von der EreignisProzedur aufgerufene Subroutine hat den Vorteil, dass du sie auch anderweitig einsetzen kannst, zB per Aufruf über einen Button, aus dem Makro-Menü oder einer anderen EreignisProz wie bspw Worksheet_Activate (dann wird sie immer aufgerufen, wenn das Blatt geöffnet wird, falls mal noch andere dazukommen sollten).
Gruß Luc :-?

Anzeige
AW: Du lässt ja wohl nicht locker, ...
26.11.2013 00:39:36
mike49
Hallo Luc,
danke, dass du dich nochmals der Sache annimmst.
Ich hab's jetzt genau so gemacht, wie du es in deiner prima Beschreibung erklärt hast.
Beim Öffnen der Datei kommt aber die Meldung:
Laufzeitfehler '1004':
Die Match-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
Gruß
mike49

wir haben ja auch 2013 ;-) owT
26.11.2013 00:56:16
Matthias

Uups . . .
26.11.2013 01:20:08
mike49
. . . das habe ich total übersehen! Danke für den Tipp. Jetzt funktioniert alles so wie gewünscht.
Gruß
mike49

OT: Habt ihr das schon bemerkt, Matti & Erich; ...
27.11.2013 18:36:43
Luc:-?
…im Archiv ist der (BücherServer-)Wurm?!
Vglt doch mal diesen Link mit dem hier (Genauso ist es von Matti ist jetzt der letzte BT, 20 flgd fehlen!). Ich glaube, dass das auch schon früher passiert ist, weshalb man manche BTe nicht wiederfindet. Möglicherweise Absicht (Kommerz!)?
Das hat mich Stunden und Nerven gekostet! :-[
Gruß Luc :-?

Anzeige
OT: Ist mir nicht aufgefallen ...
27.11.2013 23:05:27
Matthias
Hallo Luc
Bin aber auch nicht sicher ob unter meinem BT wirklich noch 20 flgd BT gepostet wurden.
Ich kanns mir auch gar nicht vorstellen, da ich täglich in der Listensuche
unter meinem Namen alle BT anzeigen lasse. Da ist mir echt nichts aufgefallen.
Werd aber ab jetzt mal intensiver drauf achten.
Gruß Matthias

Ist mir nur z.T. nicht aufgefallen ...
28.11.2013 10:26:51
Matthias
Hallo Luc
Nachtrag
Ich hab die flgd BT aus dem 1.Link schon gesehen,
aber habe eben dann später immer nur noch die Listesuche aufgerufen.
Dort fehlen ja dann die Folgebeiträge.
Hab mir aber echt nichts weiter dabei gedacht.
Gruß Matthias

Anzeige
Hast du jetzt 'n Vor-/Folgejahr eingestellt ...
26.11.2013 01:45:21
Luc:-?
…und die Mappe so hochgeladen, Mike?
Das habe ich nicht überprüft und einen solchen Fehler auch nicht abgefangen. Dann muss man das anders machen, nämlich sich ggf nach der Jahreszahl in der Tab richten:
Sub StartZelle()
Const zlOff As Long = 2, adJahrZ$ = "F3", adMonBer$ = "A7:A40"
Dim axDatum As Variant, monBer As Range
axDatum = Split(Range(adJahrZ).Text & Format(Now, "-m d"))
Set monBer = Range(adMonBer)
monBer.Cells(WorksheetFunction.Match(CLng(CDate(axDatum(0) & "-1")), _
monBer, 0)).Offset(zlOff, CInt(axDatum(1))).Activate
Set monBer = Nothing
End Sub
Aber eigentl ist das Quatsch, denn in anderen Jahren als dem aktuellen müssten eigentl andere Zellen ausgewählt wdn:
1. in Vorjahren evtl der 31.12. oder sonstwas bzw gar nichts,
2. in Folgejahren der 1.1. oder ebenfalls dito.
Deshalb schlage ich eher Folgendes vor:
Sub StartZelle()
Const zlOff As Long = 2, adJahrZ$ = "F3", adMonBer$ = "A7:A40"
Dim fxJahr As Long, axDatum As Variant, monBer As Range
On Error GoTo fx
fxJahr = Range(adJahrZ)
If fxJahr  Year(Now) Then Err.Raise xlErrNum
axDatum = Split(Format(Now, "yyyy-m d"))
Set monBer = Range(adMonBer)
monBer.Cells(WorksheetFunction.Match(CLng(CDate(axDatum(0) & "-1")), _
monBer, 0)).Offset(zlOff, CInt(axDatum(1))).Activate
GoTo ex
fx: If Err.Number = xlErrNum Then
MsgBox "Das eingestellte Jahr entspricht nicht dem aktuellen!", _
vbExclamation, "Jahresvergleich"
Else: MsgBox Err.Description, vbCritical, "Interner Fehler " & CStr(Err.Number)
End If
ex: Set monBer = Nothing
End Sub
Mann, du bringst mich noch um den Verstand… ;-]
Gruß Luc :-?

Anzeige
AW: Du lässt ja wohl nicht locker
26.11.2013 19:36:39
mike49
Hallo Luc,
habe erst jetzt bemerkt, dass du dich nochmals gemeldet hast und eine tolle Korrektur angeboten hast. Danke nochmals hierfür.
Bei einer nicht aktuellen Jahreszahl kommt die Meldung und man kann korrigieren.Prima.
Ich hatte 2014 eingestellt und dies aufs aktuelle Jahr korrigiert und es hat dann geklappt mit der Zellmarkierung.Die Mappe habe ich nicht nochmals hochgeladen, da du das ja moniert hast.
Das Löschenmakro verwende ich eigentlich nur am Jahresende. Ich habe es noch ein wenig abgeändert, damit die evtl. vorhandene Überzeit in AO42 nach AI5 übernommen wird.
Aufgefallen ist mir noch, dass bei falsch eingestellter Jahreszahl und bestätigter Meldung mit anschließender Korrektur der Jahreszahl auf das aktuelle Jahr, keine Aktualisierung erfolgt und die Zelle des aktuellen Tages nicht markiert wird. Man muss erst die Mappe speichern und schließen und dann wieder öffnen, damit die Markierung der aktuellen Tageszelle erfolgt.
Falls das nicht zu ändern ist, kann ich auch so damit leben.
Gruß
mike49

Anzeige
Das stimmt nicht ganz, ...
26.11.2013 21:00:47
Luc:-?
…Mike;
du könntest ja die Prozedur StartZelle - wie ich übrigens erwähnt hatte - auch direkt aufrufen. Aber es wäre auch möglich, diesen Aufruf mit einer Überprüfung der WertÄnderung von fxJahr zu verbinden. Wenn du das machen willst, ist Folgendes erforderlich:
1. Am Anfang des Moduls (vor allen Prozeduren), in das du StartZelle kopiert hast, trägst du in eigener Zeile Public Const adJahrZ$ = "F3": Public fxJahr As Long ein (noch davor sollte in ebenfalls eigener Zeile Option Explicit stehen → auf allen Code-Blättern ← zukünftig bei Neuanlage automatisch erreichbar durch Setzen des Hakens im VBE unter Menü Extras - Optionen - Variablendeklaration erforderlich ).
2. In der VariablenDeklaration von StartZelle musst du dann genau diese Constante und diese Variable entfernen, sonst klappt das nicht (Konstante und Variable sind dann global, d.h., andere Prozeduren können sie ebenfalls (die Variable mit jeweils aktuellem Stand) nutzen.
3. Im (Dokument-Klassen-)Modul Tabelle1 (2013) legst du anschließend den Rahmen einer Worksheet_Calculate-Prozedur an. Dazu wählst du im rechten Kopf-DropDown-Menü Calculate aus (im linken KopfFenster sollte dabei Worksheet stehen). In die Leerzeile der so angelegten Prozedur schreibst du: If Range(adJahrZ) fxJahr Then Call StartZelle
So, damit wäre dann auch das geschafft. ;-)
Viel Spaß! Gruß Luc :-?

Anzeige
AW: Du lässt ja wohl nicht locker
27.11.2013 00:26:42
mike49
Hallo Luc,
musste weg und bin erst jetzt wieder zurück.
Wow! Das ist mir doch ein paar Nummern zu hoch. Da reichen meine "kaum VBA Kenntnisse" nicht aus. Das krieg ich nicht hin.
Gruß
mike49

Wieso nicht? Haste doch zuvor auch geschafft! owT
27.11.2013 00:42:18
Luc:-?
:-?

AW: Du lässt ja wohl nicht locker
27.11.2013 21:11:15
mike49
Hallo Luc,
komme erst jetzt dazu, mich nochmals zu melden.
Ich denke mal: Ich kann's nicht (zu wenig VBA-Kenntnisse) und du möchtest nicht.
Wie dem auch sei. Danke nochmals für deine bisherige Hilfe.
Gruß
mike49

Wieso 'möchte nicht'? Habe dir doch die ...
28.11.2013 03:12:05
Luc:-?
…erforderlichen Schritte genauso exakt beschrieben wie beim letzten Mal, Mike?
Sollte doch kein Problem sein, das dann auch zu tun! Das mit Option Explicit in der Klammer ist nur eine Zusatz-Info, die hier nicht unbedingt relevant ist, da ich ja alles deklariert hatte.
Im Übrigen ist mein Betreff von neulich wohl kaum als running gag geeignet, denn allmählich wird's dann doch langweilig. :-|
Gruß Luc :-?
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige