ralfkausk
Goto Top

Registerkarte in Excel automatisch färben

Hallo zusammen

Ich habe mir eine Zeiterfassung in Excel gebaut.
Um die Register leichter zu finden in denen spezielle Werte stehen, würde ich gerne die Registerkarte automatisch färben.

Beispiel: WENN (A1 = "WA";[Färbe Register Rot];;)

Ich habe zwar schon ein Beispiel gefunden, aber ich konnte es nicht an meine Bedürfnisse umbauen so das es funktioniert.
(In dem Beispiel habe ich einen Rechtsklick auf den entsprechenden Tab gemacht und "Code anzeigen" gewählt)

Was ich gefunden habe sah so aus:
If [AH5].Value < Date Then 
       ActiveSheet.Tab.ColorIndex = 3 
    Else 
       ActiveSheet.Tab.ColorIndex = 4 
    End If

Das habe ich umgebaut:
If [A1].Value = "WA" Then   
       ActiveSheet.Tab.ColorIndex = 3 
End If

Hat aber leider nicht funktioniert.
Kann mir jemand auf die Sprünge helfen?


Gruß Ralf

Content-Key: 321965

Url: https://administrator.de/contentid/321965

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: emeriks
emeriks 24.11.2016 um 13:34:34 Uhr
Goto Top
Hi,
versuche mal so
If Range("A1").Value = "WA" Then   
       ActiveSheet.Tab.ColorIndex = 3 
End If

E.
Mitglied: Pjordorf
Pjordorf 24.11.2016 um 13:48:49 Uhr
Goto Top
Hallo,

Zitat von @ralfkausk:
Um die Register leichter zu finden in denen spezielle Werte stehen, würde ich gerne die Registerkarte automatisch färben.
Bedingte Formatierung nutzen.

Hat aber leider nicht funktioniert.
Was genau steht in A1 denn drin? Auch ein Leerzeichen hat einen Wert, nur NULL ist nichts face-smile Wenn dein IF eben nicht die zelle einfrbt, steht logischerweise etwas in A1 was nicht HA entspricht. Groß/Kleinschreibung, Leerzeichen, Nicht darstellbare Zeichen. Du prüfts hier auf exakt HA und nicht irgend etwas anderes. Es muss exakt HA sein damit dein IF ein True (Wahr) ergibt und die Bedingung der Gleichung aufgeht. Deine Gleichung ist Wert = HA. Wenn diese Gleichung auf beiden Seiten des gleichheitszeichen Identische Werte hat, wird die Frage nach dem Ergebnis der Gleichung mit Wahr oder Falsch gemeldet. Dieses Wahr löst den Sprung zur nächsten Anweisung aus oder ein Falsch eben zur nächsten bedingung oder wir bei dir zum End If und bei dir wird nix Bunt.

Kann mir jemand auf die Sprünge helfen?
Mach mal ein
If [A1].Value = "WA" Then   
      Debug.Print [A1].Value
      ActiveSheet.Tab.ColorIndex = 3
End If
und setze einen Haltepunkt (F9) bei dein ActiveSheet.Tab.Coloindex = 3. damit wird das VBA dort angehalten und du kannst im Debug Fenster (vorher Einschalten) sehen was dein [A1].Value liefert. (einfachstes Debuging - ungewollte Käfer entfernen)

Gruß,
Peter
Mitglied: emeriks
emeriks 24.11.2016 um 14:07:13 Uhr
Goto Top
Bedingte Formatierung für Registrierkarten?! Sowas gibts?
Mitglied: Kraemer
Kraemer 24.11.2016 um 14:09:48 Uhr
Goto Top
Zitat von @emeriks:

Bedingte Formatierung für Registrierkarten?! Sowas gibts?
Leider nein
Mitglied: Pjordorf
Pjordorf 24.11.2016 um 14:10:16 Uhr
Goto Top
Hi,

Zitat von @emeriks:
versuche mal so
Hatte kein Excel geöffnet und bin daher auch die Adressierung nicht durchgegangen. Hatte die Hoffnung das er beim Debuggen schnell gefunden hätte das seine Art der Adressierung hier nicht zum gewünschten Ziel führt. Zeigt aber auch das der TO hier ohne Sinn und Verstand einfach irgendetwas von irgendwoher hier rein kopiert hat und nur die Hoffnung hatte das sich buntes ergibt. Copy und Paste verleitet eben dazu nicht zu wissen was man denn tut. face-sad Ob dem TO sein Copy und Paste gar von einen VBA Schnippsel herrührt ist daher auch fraglich. Die Adressierung sticht jedenfalls deutlich ins Auge wenn man sich mit VBA beschäftigt hätte...

Gruß,
Peter
Mitglied: Pjordorf
Pjordorf 24.11.2016 um 14:14:30 Uhr
Goto Top
Hallo,

Zitat von @Kraemer:
Leider nein
Si.

Passiert wenn man schnell mal eben etwas überfliegt und das Zauberwort (hier Registerkarte) gar nicht registriert hat denn die Wörter "Excel - Zellwert - Einfärben" reichen ja schon um uns ans laufen zu bringen und schnell mal eben die Lösung hingehaucht wird face-smile

Wer Lesen kann ist klar im Vorteil face-smile

Gruß,
Peter
Mitglied: Kraemer
Kraemer 24.11.2016 um 14:17:35 Uhr
Goto Top
Moin,
Zitat von @Pjordorf:
Wer Lesen kann ist klar im Vorteil face-smile
nimm es nicht so schwer - wenn ich mir die Threads hier heute so ansehe, könnte es schon Freitag sein face-wink
Mitglied: Pjordorf
Pjordorf 24.11.2016 um 14:48:10 Uhr
Goto Top
Hi,

Zitat von @Kraemer:
nimm es nicht so schwer - wenn ich mir die Threads hier heute so ansehe, könnte es schon Freitag sein face-wink
Und ich dachte schon der Freitag ist bis einschließlich Donnerstag verlängert worden - wenn man die Fragen hier als Wochentagsbestimmer nimmt. Da war das mit einen Sextanten bestimmen des Standorts bei Schnee, Nebel, Regen und Dunkelheit face-smile ja noch richtig einfach face-smile

Wie sagten letztens Jugendliche am Rheinufer stehend während sie einen ertrinkenden zuschauten "Wenns wichtig wär, gebe es eine APP. Es gibt keine, lasst uns weitergehen"

Gruß,
Peter
Mitglied: 116301
116301 24.11.2016 um 16:53:40 Uhr
Goto Top
Hallo Ralf!

Sollte z.B. so gehen:
Option Explicit
Option Compare Text

Private Sub Workbook_SheetChange(ByVal Sheet As Object, ByVal Target As Range)
    If Target.Address = "$A$1" Then  
        If Target.Text Like "wa" Then   'Keine Groß/Klein-Unterscheidung  
            Sheet.Tab.ColorIndex = 3
        End If
    End If
End Sub
Code in DieseArbeitsmappe (ThisWorkbook) einfügen

Gruß Dieter
Mitglied: Pjordorf
Pjordorf 24.11.2016 um 19:25:46 Uhr
Goto Top
hallo,

Zitat von @116301:
If Target.Text Like "wa" Then 'Keine Groß/Klein-Unterscheidung
Oder auch ein IF Uppercase(Target.Text) = "WA" Then oder Lowercase oder beidseitig Upper- bzw. Lowercase .....wobei hier z-B. Case und andere Schleifen/Prüf methoden noch gar nicht angesprochen wurden...face-smile
Einer der möglichen möglichkeiten ist allerdings als Quellcode irgendwo auf der Welt als Patent..... face-smile

Gruß,
Peter
Mitglied: ralfkausk
ralfkausk 06.12.2016 um 12:43:53 Uhr
Goto Top
Hallo zusammen

Danke für die vielen Vorschläge.
Bin ich erst heute dazu gekommen sie auszuprobieren.

Leider hat keiner der Vorschläge funktioniert.
Was ich ganz vergessen hatte zu erwähnen, ich benutze Office 2016 (Win7)

Es gibt beim speichern eine Fehlermeldung, dass das so nicht funktioniert und ich als .xlsxm speichern soll, was ich auch gemacht habe.
Aber, die Karteireiterfarbe wird nicht geändert.
Mitglied: Pjordorf
Pjordorf 06.12.2016 um 12:59:11 Uhr
Goto Top
Hallo,

Zitat von @ralfkausk:
Leider hat keiner der Vorschläge funktioniert.
Eine Fehlermeldung solltest du schon haben oder uns ganz genau sagen was stattdessen pssiert?

Es gibt beim speichern eine Fehlermeldung
Hast du davon den Text oder gar ein Bild?

Aber, die Karteireiterfarbe wird nicht geändert.
Warum sollte beim Speichern das auch passieren?

Gruß,
Peter
Mitglied: ralfkausk
ralfkausk 06.12.2016 um 14:57:09 Uhr
Goto Top
Lösung gefunden

Hatte zwischenzeitlich noch mal einen Kollegen gefragt, der ursprünglich nicht zur Verfügung stand.
Zusammen haben wir dann rausgefunden wie's funktioniert.

Man muss dazu sagen, da es sich bei meinem Dokument um eine Zeiterfassung handelt, also 12 Monatsreiter + einen Testreiter habe ich mich entschieden den Code in ein Modul auszulagern und in den einzelnen Tabs "nur" das Modul aufzurufen.
Das hat den charmanten vorteil das ich Änderungen am Code nur 1x machen muss.

Außerdem werde ich mit dem Code auch gleichzeitig meine Bedingte Formatierung ablösen.

Code des Moduls:
Sub MyTabColor()
Dim myCell As Range
Dim myRange As Range
 Set myRange = Range("D1:D20")  
 For Each myCell In myRange
    'If myCell.Value = "wa" Then  
    Select Case myCell.Value
    Case "WA"  
        myCell.Interior.ColorIndex = 4 'GRÜN  
        ActiveSheet.Tab.Color = 255
    Case "A"  
        myCell.Interior.ColorIndex = 3
End Select
Next
End Sub

Code der einzelnen Tabs:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Call MyTabColor
End Sub
Mitglied: Pjordorf
Pjordorf 06.12.2016 aktualisiert um 15:22:10 Uhr
Goto Top
Hallo,

Zitat von @ralfkausk:
Zusammen haben wir dann rausgefunden wie's funktioniert.
Wunder wenn fast alle Lösungen schon vorliegenface-smile Die Case Version fehlte aber face-smile

Das hat den charmanten vorteil das ich Änderungen am Code nur 1x machen muss.
Der normaler weg etwas zu programmieren.

'If myCell.Value = "wa" Then
Achte darauf das du dort niemals Wa oder wA oder WA stehen hast. Und weiter unten im Code ebenfalls. Sonst kommt nicht Grün wenn du es erwartest. (Gros / kleinschreibung beachten) z.B. If Uppercase$(myCell.Value) = Uppercase$"wa" then....

Gruß,
Peter