Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Registerfarbe datumsscharf färben
#1
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
Antworten Top
#2
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)
Antworten Top
#3
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
Antworten Top
#4
@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)
Antworten Top
#5
@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
Antworten Top
#6
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
Antworten Top
#7
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)
Antworten Top
#8
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
Antworten Top
#9
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)
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste