Clever-Excel-Forum

Normale Version: Registerfarbe datumsscharf färben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo.

Ich kenne mich mit den Makros nicht wirklich aus... ich suche mir viel in Foren zusammen.

Ich habe eine Excel-Datei wo ich für jeden Tag im Monat ein Tabellenblatt habe.

Nun möchte ich, dass sich das Register vom aktuellen Tag (z.B: heute 15.02) automatisch grün färbt. Wenn ich morgen die Datei öffne, dann soll der 16.02 und nicht der 15.02 grün sein.

Ich hoffe ihr könnte mir helfen.

LG Anna
Moin!
Ich halte zwar nix von Tagesblättern, ist aber egal.

Ins Modul DieseArbeitsmappe:

Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
  ws.Tab.ColorIndex = xlColorIndexNone
Next
Worksheets(Day(Date)).Tab.Color = vbGreen
End Sub

Gruß Ralf
Hallo,

@Ralf
so wie ich das sehe, steht wohl auch der Monat mit im Blattnamen.
Ich würde auch nicht über eine Schleife gehen - ggf. sind ja schon irgendwelche Tabs eingefärbt und werden so auch "entfärbt", ich würde im Bevore Save den entsprechenden Tab wieder "entfärben".

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(Format(Date, "DD.MM")).Tab.ColorIndex = xlColorIndexNone
End Sub

Private Sub Workbook_Open()
Worksheets(Format(Date, "DD.MM")).Tab.Color = vbGreen
End Sub

@Anna
Der Code gehört ins Codemodul von "DieseArbeitsmappe".
Im VBA Explorer Doppelklick auf "DieseArbeitsmappe" und den kompletten Code rechts ins Codefenster kopieren.

Gruß Werner
@Werner:
Ich habe der Einfachheit geschuldet den .Index des Blatts und nicht den .Name genommen, da ja für jeden Tag ein Blatt vorliegt.
Dann ist der Monat natürlich irrelevant.

Wenn Du davon ausgehst, dass andere Register bereits (anders) gefärbt sind, müsste man diese Farbe ja "zwischenspeichern" und im BeforeSave wieder zurücksetzen.
Zumindest, wenn das vorab gefärbte Register "an der Reihe" ist.

Gruß Ralf
@Ralf,

den .Index des Blatts und nicht den .Name genommen
tja, da hätte ich dann wohl besser schauen sollen, war mir nicht aufgefallen.

Und das mit dem färben/entferben, da reden wir wohl aneinenader vorbei. Ich meine damit nicht die "Tagesblätter". Es könnten ja sonstige Blätter in der Datei sein, bei denen der Tab gefärbt wurde. Mit deiner Schleife würdest du die dann aber auch "entfärben".

Ich gehe davon aus, dass immer nur der Tab des Blattes des aktuellen Tagesdatums gefärbt ist/werden soll. Bein Bevor Close nehme ich dann die Färbung wieder raus. Ich gehe davon aus, dass sonst keine Tabs von Blättern mit dem Tagesdatum gefärbt sind.

Gruß Werner
Vielen Dank für die schnelle Hilfe.

@Ralf 

Wenn schon ein Code für ein anderes Makro im Modul Diese Arbeitsmappe hinterlegt ist, füge ich dein Code jetzt im selben Fernster unter dem Bestehenden ein?

Oder wo muss ich das hinpacken?

LG Anna
Moin!
Kommt drauf an!
Wenn Du schon ein _Open in DieseArbeitsmappe hast, darfst Du nur den Prozedurrumpf (also ohne Sub … End Sub) ins bestehende reinkopieren.
Nimm ruhig die Codes von Werner, die sind stringenter.

Gruß Ralf
Okay... das von Ralf hat in der Probedatei gut funktioniert aber wenn du sagst das andere ist besser dann nehme ich das.

Magst du für Laien wie mich mal bitte den Unterschied erklären?

LG

Also mit dem Code von Werner kriege ich Probleme.

Wenn ich z.B. heute die März Datei öffne dann kommt immer Fehler "9" 

Diesen Teil markert er mir gelb an in der VBA....

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Worksheets(Format(Date, "DD.MM")).Tab.ColorIndex = xlColorIndexNone

LG
Werners Code spricht das Worksheet mit dem NAMEN des aktuellen Tags im Format TT.MM an, heute also Worksheets("18.02").

Meiner spricht den INDEX des Sheets an, heute also das 18. Sheet von links, also Worksheets(18)

Deshalb funktioniert Werners Code nur in der Mappe des aktuellen Monats.
Meiner funktioniert zwar im März, macht aber keinen Sinn.
Für Eintragungen müssen wir die Mappen aber schon immer Vormonat nutzen und jedes Mal dann die Fehlermeldung, ist auch blöd.

Da haben wir mit deinem Code den Effekt erreicht, den wir wollten.

LG
Seiten: 1 2