Office: Registerfarbe nach Bedingung per VBA verändern

Helfe beim Thema Registerfarbe nach Bedingung per VBA verändern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, ich stehe aktuell vor dem Problem, das ich Register (Jan, Feb, Mrz, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez) automatisch einfärben... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Jandb1980, 12. September 2014.

  1. Jandb1980 Erfahrener User

    Registerfarbe nach Bedingung per VBA verändern


    Hallo Leute,

    ich stehe aktuell vor dem Problem, das ich Register (Jan, Feb, Mrz, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez) automatisch einfärben möchte, wenn das aktuelle Registerblatt das aktuelle Datum (im Bereich B10 - B40 zu finden) beinhält.

    Ich habe per Google schon folgenden Code gefunden:
    Code:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Range("A1") <> "" And Range("A2") <> "" And Range("A3") <> "" Then
        Sh.Tab.Color = RGB(0, 255, 0)
            Else
        Sh.Tab.Color = RGB(255, 0, 0)
    End If
    End Sub 
    
    Aber dort werden ja nur Zellen abgefragt, ich müsste ja erst das Tabellenblatt und dann den Zellbereich abfragen. Wie bewerkstellige ich das am Besten?
     
    Jandb1980, 12. September 2014
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    nachfolgendes VBA-Makro in das Codemodul der Arbeitsmappe "DieseArbeitsmappe" (oder englisch "ThisWorkbook") kopieren.

    Diese Makro überprüft dasjenige Arbeitsblatt, in dem ein Änderungsereignis stattgefunden hat.
    Ist es eines der Monatsarbeitsblätter, wird überprüft, ob im Bereich B10:B40 dieses Arbeitsblattes das heutige Datum enthalten ist: Falls ja, wird der Arbeitsblatt-Tab grün eingefärbt.
    Wird nichts gefunden, wird der Arbeitsblatt-Tab auf "keine" Farbe gestellt.

    Code:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      Dim Rg As Range
      Dim Monate As Variant, I%
      Monate = Array("", "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")
      For I% = 1 To 12
        If Sh.Name = Monate(I%) Then
          'Blattname ist in der Monate-Liste enthalten -> Bereich B10:B40 prüfen
          Set Rg = Sh.Range("B10:B40").Find(What:=Date, LookIn:=xlValues, LookAt:=xlWhole)
          If Rg Is Nothing Then
            'Suchvorgang erfolglos:
            Sh.Tab.ColorIndex = xlColorIndexNone
          Else
            'HEUTE() wurde im Bereich B10:B40 gefunden -> BlattTab einfärben
            Sh.Tab.Color = vbGreen
          End If
          Exit Sub
        End If
      Next I
    End Sub
    
     
    Zuletzt bearbeitet: 12. September 2014
    Exl121150, 12. September 2014
    #2
  3. Jandb1980 Erfahrener User
    Kann es sein, das der Code bei gesperrten Blättern nicht funktioniert?
    Muss man dann noch das Passwort vor der Abfrage per VB eingeben zum Entperren, und nach der Abfrage wieder sperren?
     
    Jandb1980, 12. September 2014
    #3
  4. Exl121150 Erfahrener User

    Registerfarbe nach Bedingung per VBA verändern

    Hallo,

    man kann jedes einzelne Arbeitsblatt schützen (=Blattschutz) und/oder man kann die ganze Arbeitsmappe schützen (=Mappenschutz).

    1) Der Blattschutz stellt kein Hindernis dar, die Farbe des Blatt-Tabs zu ändern. Da jedoch obiges Makro auf eine Arbeitsblattänderung reagiert, kann es sein, dass die Arbeitsblattänderung blockiert wird durch den Blattschutz und damit auch das Makro nicht mehr aufgerufen wird. Das tritt zB. dann ein, wenn alle Zellen des Arbeitsblattes gesperrt sind und dann der Blattschutz aktiviert wird.

    2) Ist der Mappenschutz aktiviert, dann ist auch die Farbänderung der Arbeitsblatt-Tabs blockiert bzw. verursacht der Versuch, sie trotzdem auszuführen, einen Fehler.

    Beide Schutzarten sind also mehr oder weniger Gift für obiges Makro und es genügt in diesem Fall nicht, in dieses Makro die beiden Arbeitsblatt/Arbeitsmappen-Methoden "Unprotect ... " bzw. "Protect ..." einzufügen, denn dazu müsste das Makro zuerst einmal aufgerufen werden. Du musst also außerhalb des obigen Makros einen Mechanismus (per Hand oder wieder per Programm) vorsehen, mit dem dieser Schutz aufgehoben bzw. wieder gesetzt werden kann.
     
    Exl121150, 12. September 2014
    #4
  5. Jandb1980 Erfahrener User
    Hm... ok, also könnte ich nicht beim Öffnen des Dokumentes den Blattschutz der Monatsblätter aufheben, dann das obige Makro durchlaufen lassen, und danach den Paswortschutz der Monatsblätter wieder einschalten?
     
    Jandb1980, 12. September 2014
    #5
  6. Exl121150 Erfahrener User
    Hallo,

    natürlich geht das - das wäre so ein gangbarer Weg.
     
    Exl121150, 12. September 2014
    #6
  7. Jandb1980 Erfahrener User
    Okay, und wie müsste ich das dann umsetzen?
     
    Jandb1980, 12. September 2014
    #7
  8. Beverly
    Beverly Erfahrener User

    Registerfarbe nach Bedingung per VBA verändern

    Benutze dafür das Workbook_Open-Ereignis. Wie man den Blattschutz aufhebt und wieder setz, lässt sich mit dem Makrorekorder aufzeichnen.

    Befindet sich das aktuelle Datum auf irgendeinem der 12 Tabellenblätter oder nur immer auf dem Tabellenblatt des aktuellen Monats? Falls ja, dann könnte man das Ganze noch wesentlich vereinfachen.

    Bis später,
    Karin
     
  9. Jandb1980 Erfahrener User
    Okay, also das Datum ist immer auf dem Tabellenblatt des aktuellen Monats.
     
    Jandb1980, 12. September 2014
    #9
  10. Beverly
    Beverly Erfahrener User
    Mit anderen Worte: es soll beim Öffnen der Arbeitsmappe immer der Tabellenbreiter des aktuellen Monats rot gefärbt werden - sehe ich das richtig?

    Code:
    Private Sub Workbook_Open()
       Dim arrMonate()
       Dim bytZaehler As Byte
       If Worksheets(Format(Date, "mmm")).Tab.Color <> 255 Then
          arrMonate = Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")
          For bytZaehler = 0 To 11
             If arrMonate(bytZaehler) = Format(Date, "mmm") Then
                 Worksheets(arrMonate(bytZaehler)).Tab.Color = 255
             Else
                 Worksheets(arrMonate(bytZaehler)).Tab.ColorIndex = xlNone
             End If
          Next bytZaehler
       End If
    End Sub
    

    Bis später,
    Karin
     
  11. Jandb1980 Erfahrener User
    Genauso ist es :)

    Sehr geil :) vielen Dank

    Echt ein super Forum :)
     
    Jandb1980, 12. September 2014
    #11
  12. TomAbel Neuer User
    Hallo,
    ich habe versucht den oberen String umzuwandeln damit das auf Jahre reagiert, aber irgendwie bin ich zu doof dafür!

    Ich habe eine Datei mit Register von 2001-2025 + Auswertungsregister und ich würde gerne beim öffnen mir wünschen, dass der Reiter mit dem Aktuellen Jahr Aktiv ist und sich grün einfärbt.

    Private Sub Workbook_Open()
    Dim arrJahre()
    Dim bytZaehler As Byte
    If Worksheets(Format(Date, "yyyy")).Tab.Color <> 40 Then
    arrJahre = Array("2001", "2002", "2003", "2004", "2005", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025")
    For bytZaehler = 0 To 11
    If arrJahre(bytZaehler) = Format(Date, "YYYY") Then
    Worksheets(arrJahre(bytZaehler)).Tab.Color = 10
    Else
    Worksheets(arrJahre(bytZaehler)).Tab.ColorIndex = xlNone
    End If
    Next bytZaehler
    End If
    End Sub

    Da tut sich aber gar nichts......
    Danke vorab!
     
    TomAbel, 10. Juli 2018
    #12
  13. Beverly
    Beverly Erfahrener User

    Registerfarbe nach Bedingung per VBA verändern

    Hi,

    das kannst du so lösen:

    Code:
    Private Sub Workbook_Open()
        Dim wksTab As Worksheet
        For Each wksTab In Worksheets
            If IsNumeric(wksTab.Name) Then
                If CLng(wksTab.Name) = Year(Date) Then
                    wksTab.Tab.Color = 5287936
                    wksTab.Activate
                    Exit For
                Else
                    wksTab.Tab.ColorIndex = xlNone
                End If
            End If
        Next wksTab
    End Sub
    
    
    Bis später,
    Karin
     
    Beverly, 10. Juli 2018
    #13
  14. TomAbel Neuer User
    Hey das funktioniert!!
    Vielen Dank!! :)
     
    TomAbel, 12. Juli 2018
    #14
  15. TomAbel Neuer User
    Hi Beverly (Karin)

    kann die Farbe auch geändert werden?? Also grün is ja nicht schlecht, nur aber mal zum Verständnis! Registerfarbe nach Bedingung per VBA verändern :cool:
    Wenn ich den Wert 5287800 verändere ist immer noch die gleiche Farbe drin?? Registerfarbe nach Bedingung per VBA verändern :confused:
    Ebenso bei dieser Monats Funktion, da is der Aktuelle Monat schwarz!

    Grüßle,
    Thomas
     
    TomAbel, 12. Juli 2018
    #15
Thema:

Registerfarbe nach Bedingung per VBA verändern

Die Seite wird geladen...
  1. Registerfarbe nach Bedingung per VBA verändern - Similar Threads - Registerfarbe Bedingung VBA

  2. Summewenns zwei zellen addieren mit Bedingungen

    in Microsoft Excel Hilfe
    Summewenns zwei zellen addieren mit Bedingungen: Hallo zusammen, ich hab schon alles probiert...aber ich benötige wieder mal Hilfe... Ich habe eine Liste mit Kalenderwoche (KW) B7 bis B24 Arbeitsbereich (HA/PPS) C7 bis C24 Systembereich...
  3. Registerfarbe ohne VBA?

    in Microsoft Excel Hilfe
    Registerfarbe ohne VBA?: Hallo an alle, ich muss mich mal wieder melden. Ich habe ca. 15 Tabellenblätter. In jedem ist eine unterschiedlich lange Tabelle in denen Inventar erfasst wird. Ich habe eine Zählfunktion in der...
  4. Registerfarbe an Wochenende anpassen

    in Microsoft Excel Hilfe
    Registerfarbe an Wochenende anpassen: Sehr geehrte Forenmitglieder, ich arbeite viel mit Excel und nähere mich langsam der VBA-Programmierung (Grundlagen). Ich erstellte eine Monatsdatei mit 31 Tagestabellen (z. B. 01 für 01.05., 02...
  5. Excel Registerfarbe auslesen

    in Microsoft Excel Hilfe
    Excel Registerfarbe auslesen: Hallo, ich möchte gerne in einem Tabellenblatt die einzelnen Tabellenblätter als Inhaltsverzeichnis darstellen, was bereits gut funktioniert. Die Tabellenblätter (Register) haben unterschiedliche...
  6. Registerfarbe nicht änderbar

    in Microsoft Excel Hilfe
    Registerfarbe nicht änderbar: Hallo Office Gemeinde, ich habe ein ziemlich kniffeliges Problem mit Excel 2007 zu lösen. In einem Dokument kann man die Registerfarbe der Tabellenblätter nicht ändern. Die Option ist ausgegraut...
  7. Registerfarbe nach Bedingung per VBA verändern

    in Microsoft Excel Hilfe
    Registerfarbe nach Bedingung per VBA verändern: Hallo Community, ich habe schon seit längeren ein Problem bei einem Formular welches über Excel erstellt wurde. Es besteht aus einem Deckblatt und ca. 7 weiteren Registerblättern indem...
  8. Ändern der Registerfarbe

    in Microsoft Excel Hilfe
    Ändern der Registerfarbe: Hallo wie kann ich die Farbe der Register ändern? Die unterscheidung Lichtgrau und Weiss bei Nichtmarkiert und Martkiert ist unter bestimmten Lichtverhältnissen schwer erkennbar - und führt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden