Anzeige
Archiv - Navigation
1136to1140
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

Tabellenregisterfarben automatisch ändern

Tabellenregisterfarben automatisch ändern
Ed
Hallo Leute
Ich habe einen Monatskalender für Terminvergaben erstellt, der mit 31 Tabellen (max. 31 Tage) arbeitet. In der Zelle D1 habe ich immer den jeweiligen Wochentag angezeigt, und jetzt würde ich gerne die Tabellenregister der Samstage und Sonntage automatisch rot darstellen. Ebenfalls habe ich die Möglichkeit die Tabelle mit einem "H" (für holiday) in der Zelle A1, die freie Termineingabe mit "dunkelgrün" abzudecken, damit man gleich sieht dass da keine Termine möglich sind. Es wäre natürlich toll wenn ich für diese mit "H" markierten Tage ebenfalls gleich die Tabellenregister z.B. rosa einfärben könnte.
Hat jemand eine Idee wie das gehen könnte?
Danke
Ed
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 20:59:40
Christian
Hallo Ed,
Ein Bsp: (in Zelle D1 steht ein Datum, kein String)

Option Explicit
Sub TestIt()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Tab.ColorIndex = -4142
Select Case Weekday(wks.Cells(1, 4))
Case 1, 7: wks.Tab.ColorIndex = 3
End Select
If wks.Cells(1, 1) = "H" Then wks.Tab.ColorIndex = 38
Next
End Sub
Gruß
Christian
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 22:45:16
Ed
Hallo Christian
Danke für die Hilfe. Irgendwie funktioniert es noch nicht.
Also in der Zelle D1 steht =E1 dass so formatiert ist, dass nur der Wochentag ausgeschrieben wird, und in Zelle E1 wird das ganze Datum ausgeschrieben. Z.B. wird folgendes angezeigt: Donnerstag (aus Zelle D1) und 04. März 2010 (aus der Zelle E1) linksbündig dass es schön aussieht.
Ich bin VBA mässig ein Neuling, muss ich das ganze Skript einfach im Visual Basic Editor unter Thisworkbook in ein neues Modul hinein kopieren. Sollte es sofort wirksam sein, oder muss ich noch etwas machen?
Gruss
Ed
Anzeige
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 23:26:38
Christian
Hallo Ed,
der Code muss in ein allgemeines Modul.
Mit Alt+F11 in den VBA-Editor wechseln - Einfügen - Modul. Hier den Code reinkopieren.
Zum Ausführen musst du dann das Makro "TestIt" starten: In Excel - Extras - Makro - Makros... und im neuen Fenster Makro auswählen und auf Ausführen klicken.
Makros musst du hierfür naturlich erlauben, d.h unter Extras - Makro - Sicherheit musst du "Mittel" auswählen. Wenn das nicht voreingestellt ist, dann die Einstellung vornehmen, die Datei speichern und neu öffnen und beim Öffnen "Makros aktivieren" wahlen.
Gruß
Christian
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 04:10:15
Ed
Hallo Christian
Danke für die Hilfe
Makros laufen, da ich auch eins benutze. "TestIt" ergab einen Laufzeitfehler 13 mit Vermerk "Typen unverträglich" und Select Case Weekday(wks.Cells(1, 4)) ist beim debuggen gelb markiert.
Gruss
Ed
Anzeige
Tabellenregisterfarben ist missverständlich,...
10.02.2010 23:44:21
Luc:-?
...Ed,
denn anscheinend willst du nicht die Registerfarben der Mappe an sich, sondern nur die Farben von Zellen ändern. Das ist ein Unterschied...!
Gruß Luc :-?
AW: Tabellenregisterfarben ist missverständlich,...
11.02.2010 04:14:36
Ed
Hallo Luc
Nein ich will die Registerfarben (die kleinen Tabellen "Tabs") unten in Excel verändern. Ich habe da eine Date Tabelle und 31 Tagestabellen nummeriert von 01 bis 31. Es wäre schön, wenn ich ohne die Tabelle aufzumachen schon sehe ob es Samstag oder Sonntag ist. Das Ausfüllen der Tabellenfarbe funktioniert schon mit den SA + So und den Hollidays. Das sieht man aber erst wenn man die Tabelle aufmacht.
Gruss
Ed
Anzeige
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 14:32:14
Christian
Hallo,
diese Fehlermeldung bekomme ich, wenn in D1 kein Darum steht sondern ein String im Sinne von "Donnerstag" aber eben nicht 04.03.2010 mit dem Format "TTTT".
Gruß
Christian
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 15:22:54
Ed
Hallo Christian
Die Zelle D1 ist mit dem Format "TTTT" formatiert, und wenn ich das Format auf "TT. MMMM JJJJ" stelle zeigt es 04. März 2010" an. Ich habe einfach in der Zelle E1 wo das Datum dargestellt wird, die Formel =Data!A1+A2-1
=Data!A1 ist in meiner ersten Tabelle die Data heisst, die Eingabezelle um den Monat zu deffinieren MM.JJJJ
A2 ist auf jeder Tagestabelle der aktuelle Tag (hier der 4.)
und die -1 benötige ich, damit auch der 4. März 2010 angezeigt wird (ohne -1 würde ja der 5. dargestellt)
Gruss
Ed
Anzeige
AW: ein Beispiel
11.02.2010 17:07:14
Ed
Hallo Christian
Das ist genau was ich möchte. Ich verstehe nicht warum es bei mir nicht geht!!
Ebenfalls wenn ich jetzt in Deiner Tabelle 7 den 21. Feb. 2010 eingebe, auch einen Sonntag, dann bleibt die Farbe grau und es wechselt nicht auf rot.
Ist bei mir das VBA Modul korrupt?
Gruss
Ed
AW: ein Beispiel
11.02.2010 17:07:38
Ed
Hallo Christian
Das ist genau was ich möchte. Ich verstehe nicht warum es bei mir nicht geht!!
Ebenfalls wenn ich jetzt in Deiner Tabelle 7 den 21. Feb. 2010 eingebe, auch einen Sonntag, dann bleibt die Farbe grau und es wechselt nicht auf rot.
Ist bei mir das VBA Modul korrupt?
Gruss
Ed
Anzeige
AW: ein Beispiel
11.02.2010 17:22:49
Ed
Hallo Christian
Jetzt habe ich weiter probiert mit Deiner Tabelle, und alle Register auf keine Farbe gesetzt, Tabelle 7 auf 21. März 2010, und Tabelle 1 noch ein "H" in Zelle A1 gesetzt, und dann das Makro gestartet, und jetzt ging es wieder. Wie ist das später, passiert das beim erstellen des "Monats", oder kann das auch automatisch gehen, d.h. wenn ich auf einer Tabelle das "H" einsetze, sollte das Register gerade die Farbe wechseln?
Gruss
Ed
AW: ein Beispiel
11.02.2010 17:42:08
Christian
Warum es bei dir nicht geht, kann ich so nicht sagen...ich kenn deine Datei ja nicht.
Bei meinem Beispiel musst du nach Änderung (wie zB. in Tabelle 7 den 21. Feb. 2010 eingeben) das Makro erneut ausführen.
Wenn das automatisch erfolgen soll, dann nimm das "Workbook_SheetChange" Ereignis wie im Beispiel von Ramses. Dieses startet automatisch bei jeder Änderung von irgendeiner Zelle in allen Tabellen, prüft ob die Zell-Adresse "A1" oder "D1" ist steigt anderfalls wieder aus.
Da dieses Makro bei jeder Änderung anschlägt, würde ich in diesem Fall nicht machen.
Bei meiner Variante musst du das Makro halt pro Monat einmal starten.
Es gäbe auch noch 'ne andere Möglichkeit: Das Makro wird nur aktiviert, wenn in der Tabelle "Data" eine Änderung erfolgt. Das wäre dann das "Worksheet_Change" Ereignis in der Tabelle "Data". Da ich aber weiß, wie deine Einträge für Feiertage zustande kommen, ist as alleine evt auch nicht ausreichend.
Gruß
Christian
Anzeige
AW: Problem gelöst
11.02.2010 17:48:01
Ed
Nochmals Danke Christian
Ich bin mit Deiner Lösung glücklich.
Gruss
Ed
AW: ein Beispiel
11.02.2010 17:40:20
Ed
Nochmals Hallo Christian
Ich hab's gefunden.
Ich hatte neben den 31 Tages Tabellen noch zwei weitere Tabellen! Eine hiess Data, und die andere Control, und beide hatten in D1 natürlich etwas anderes (Text) anstatt das erwartete Datumsformat!!
Jetzt habe ich in diesen beiden Tabellen einfach zuoberst noch eine Zeile eingefügt, und dem D1 ebenfalls einen Wochentag format gegeben.
Super, ich bin froh geht es.
Nochmals besten Dank
Ed
Danke für die Rückmeldung
11.02.2010 17:43:54
Christian
Gruß
Christian
das kann man aber auch abfangen...
11.02.2010 17:47:52
Christian
zb, indem man diese beiden Tabellen ausschließt

Option Explicit
Sub TestIt()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Tab.ColorIndex = -4142
If wks.Name  "Data" And wks.Name  "Control" Then
Select Case Weekday(wks.Cells(1, 4))
Case 1, 7: wks.Tab.ColorIndex = 3
End Select
If wks.Cells(1, 1) = "H" Then wks.Tab.ColorIndex = 38
End If
Next
End Sub
Gruß
Christian
Anzeige
AW: OK - das ist noch besser
11.02.2010 17:54:54
Ed
Hey, das ist ja toll
Nochmals Danke
Gruss
Ed
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 21:16:26
Ramses
Hallo
Geht nur mit VBA.
Ich gehe in dem Makro davon aus, dass in D1 ein Datum steht, und dies mittels Zahlenformat zur Anzeige des Tages gebracht wird.
Das gehört in das Klassenmodul "Diese Arbeitsmappe"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Target.Address(0, 0)
Case "D1"
For Each Sh In ActiveWorkbook.Worksheets
With Sh.Tab
If IsDate(Sh.Range("D1")) And VBA.Weekday(Sh.Range("D1"), vbMonday) > 5 Then
.Color = 255
Else
.ColorIndex = 2
End If
End With
Next
Case "A1"
For Each Sh In ActiveWorkbook.Worksheets
With Sh.Tab
If UCase(Sh.Cells(1, 1)) = "H" And VBA.Weekday(Sh.Range("D1"), vbMonday) 
Gruss Rainer
Anzeige
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 22:50:33
Ed
Hallo Rainer, und besten Dank
Der ganze Code sieht gut aus, leider klappt es noch nicht. Ich nehme an dass ich etwas falsch mache, da ich ein VBA Neuling bin. Die Annahme dass in D1 ein Datum steht das mittels Zahlenformat den Wochentag darstellt ist soweit richtig.
Wie muss ich diesen Code in meine Exceldatei einbauen?
Gruss
Ed
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 16:50:06
Ramses
Hallo
mit ALT+F11 den VB-Editor starten
Doppelklick auf "VBA Projekt DeineMappe.xls"
Doppelklick auf "Diese Arbeitsmappe"
Dort den code reinkopieren
Fertig
Gruss Rainer
AW: Die Variante geht noch nicht bei mir.
12.02.2010 09:30:25
Ed
Hallo Rainer
Obwohl ich jetzt eine Lösung habe, wollte ich Deine Lösung ebenfalls ausprobieren, leider klappt es nicht.
Ich habe meine Tabellen "Data" und "Control" so abgeändert, dass die Zellen A1 frei, und D1 ein "TTTT" format aus einem Datum anzeigt. Dann habe ich die 31 Tagestabellen mit den Namen (01), (02),......(31).
Was könnte noch schief laufen? Ich fange mich an für dieses VBA programmieren zu interessieren, das ist ja toll was man alles machen kann.
Ich Danke viel mal für die Hilfe
Gruss
Ed
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige