Registriert seit: 15.02.2021
Version(en): 2002
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 05.09.2017
Version(en): 2013
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
@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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 05.09.2017
Version(en): 2013
@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
Registriert seit: 15.02.2021
Version(en): 2002
18.02.2021, 08:25
(Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2021, 08:27 von anna90.)
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 15.02.2021
Version(en): 2002
18.02.2021, 08:38
(Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2021, 08:47 von anna90.)
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 15.02.2021
Version(en): 2002
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