Microsoft Excel

Herbers Excel/VBA-Archiv

Div Tab-Register einfärben je nach Zellinhalt

Betrifft: Div Tab-Register einfärben je nach Zellinhalt von: Werner
Geschrieben am: 06.11.2012 21:11:08

Hallo Excel-Freunde
jetzt suche ich seit geraumer Zeit nach einer Möglichkeit,
die Tabellen-Register automatisch einzufärben (Ampel-Schaltung)
- je nachdem, was in dem jeweiligen Tabellenblatt in einer bestimmten Zelle steht -

Hintergrund:
In einem Tabellenblatt "ToDo-Liste" werden verschiedenen Aufgaben erfasst,
und jeweils in einer Spalte die Aufgaben mittels einer Ampel-Schaltung
Grün - Prima / Gelb - Beobachten / Rot - Kritisch
in einer Spalte jeweils beurteilt.
Da die Anzahl der Aufgaben sehr umfangreich sind, habe ich für jede
einzelne Aufgabe jeweils mittels Formel ein separates Blatt als "Übersichtsblatt"
aller wichtigen Informationen erstellt.
In diesen Blättern steht IMMER in der Zelle C3 (auf Basis der Inhalte der Todo-Liste)
ein Text - Prima / Beobachten / Kritisch
Diese Zelle wird mittels bedingter Formatierung jeweils in Grün/Gelb/Rot oder Neutral (wenn kein Status vorhanden ist) formatiert !

Da es sehr viele einzelne Tabs sind (größer 70 !) soll nun das jeweilige Registerblatt
jeweils genau so farblich eingefärbt werden, wie es in der in der Zelle C3 formatiert
ist.
Also wenn in Zelle C3 steht:
"Prima" - wird die Zelle C3 in Grün formatiert
"Beobachten" - in Gelb
"Kritisch" - in Rot
ohne Inhalt - Normalformatierung

Die Veränderung der Zellinhalte dieser größer 70 Register sind also abhängig
von der Erfassungen in der "Quell"-Tabelle "Todo"

Jetzt soll bei jeder Änderung in der Tabelle "Todo" - es wird ja jetzt
sofort per Formel in der jeweiligen Tabelle die Zelle C3 geändert -
automatisch das jeweilige Tab-Register entsprechend des Textes in Zelle
C3 angepasst werden.

Ich hoffe, daß ich mein Thema einigermaßen verständlich formulieren konnte ;)
Ich kann die Datei leider nicht hochladen - größer 3 MB

Kurz-Zusammenfassung:
Steht in der Zelle C3 eines jeweiligen Registers der Text
"Prima" - Grün
"Beobachten" - Gelb
"Kritisch" - Rot
ohne Inhalt - Normalformatierung
soll das jeweilige Register entsprechend farblich markiert werden !

egal ob es 10 oder 100 Tabellen in einer Datei sind !

Freu mich auf einen Tip von Euch ;)
Besten Gruß
Werner

  

Betrifft: Rückfrage: .... von: Matze,Matthias
Geschrieben am: 07.11.2012 00:01:39

Hallo Werner,
..ich benötige eine Kurzinfo zu den Blattnamen, liegen die in einer bestimmten Reihen folge vor?
Wäre gut, ZB.: von Blatt2 bis letztes Blatt , dann die TodoListe auf jedenfall nach vorne bringen als erstes Blatt. Neue Blätter werden immer hinten angestellt, somit würde auch der Code wieder das "letzte Blatt" erkennen.

Matze


  

Betrifft: AW: Rückfrage: .... von: Werner
Geschrieben am: 07.11.2012 07:14:28

Hallo und guten Morgen Matze
die einzufärbenden Tabs sind (ganz einfach) durchnumeriert
von 1 bis 100 - also reine Zahlen.
Das macht die einzelnen Reiter übersichtlich :)
Das erste Blatt die die Todo-Liste, danach erscheinen alle anderen Sheets !
Gruß
Werner


  

Betrifft: AW: Div Tab-Register einfärben je nach Zellinhalt von: Matze,Matthias
Geschrieben am: 07.11.2012 00:21:11

Nochmal Hallo,
... was auch gut wäre , wenn Jedes einzufärbende Blatt einen Namensteil hat der bei Jeden dieser Blätter "gleich" ist. Z.B.: Kosten 1, Kosten 2, ....


  

Betrifft: AW: Div Tab-Register einfärben je nach Zellinhalt von: Matze,Matthias
Geschrieben am: 07.11.2012 00:21:15

Nochmal Hallo,
... was auch gut wäre , wenn Jedes einzufärbende Blatt einen Namensteil hat der bei Jeden dieser Blätter "gleich" ist. Z.B.: Kosten 1, Kosten 2, ....


  

Betrifft: Tab-Register einfärben je nach Zellinhalt von: Matthias L
Geschrieben am: 07.11.2012 07:36:17

Hallo Werner

kleines Beispiel:
https://www.herber.de/bbs/user/82516.xls

Gruß Matthias


  

Betrifft: @Matthias-kleine Korrektur wg.Tabelle5 von: robert
Geschrieben am: 07.11.2012 11:25:47

With ActiveWorkbook.Worksheets(ActiveCell.Offset(-1, -1).Text).Tab

Gruß
rober


  

Betrifft: AW: @Matthias-kleine Korrektur wg.Tabelle5 von: Matze,Matthias
Geschrieben am: 07.11.2012 12:08:03

Hallo Zusammen,
ich wollte es anders probieren, aber irgendwas mach ich wieder falsche, hat Jemand mal einen Tipp,woran das wieder liegen kann?.

Option Explicit

Sub Blatt_faerben()
'Tastenkombination Strl+i
Dim Wks As Worksheet
Application.ScreenUpdating = False
For Each Wks In ActiveWorkbook.Worksheets
    If IsNumeric(Wks.Name) = True And Wks.Range("C3").Value = "prima" Then
        Wks.Tab.ColorIndex = 10
    ElseIf IsNumeric(Wks.Name) = True And Wks.Range("C3").Value = "beobachten" Then
        Wks.Tab.ColorIndex = 6
    ElseIf IsNumeric(Wks.Name) = True And Wks.Range("C3").Value = "kritisch" Then
        Wks.Tab.ColorIndex = 3
    ElseIf IsNumeric(Wks.Name) = True And Wks.Range("C3").Value = "" Then
        Wks.Tab.ColorIndex = xlColorIndexNone
    End If
Next Wks
Application.ScreenUpdating = True
End Sub

Dankender Matze


  

Betrifft: AW: @Matze von: hary
Geschrieben am: 07.11.2012 12:23:26

Moin
Wenn die Blattnamen wirklich Zahlen sind.Ungetestet.

Sub Blatt_faerben()
'Tastenkombination Strl+i
Dim Wks As Worksheet
Dim Farbe As Long
Application.ScreenUpdating = False
For Each Wks In ActiveWorkbook.Worksheets
    If IsNumeric(Wks.Name) Then
       Select Case Wks.Range("C3").Value
         Case "prima": Farbe = 10
         Case "beobachten": Farbe = 6
         Case "kritisch": Farbe = 3
         Case Else: Farbe = xlNone
       End Select
       Wks.Tab.ColorIndex = Farbe
    End If
Next Wks
Application.ScreenUpdating = True
End Sub

Sollte klappen.
gruss hary


  

Betrifft: @Harry,.... von: Matze,Matthias
Geschrieben am: 08.11.2012 00:05:32

Hi,...wenn das " = True" weggelassen wird läuft es.Ich wusste nicht das es ohne geht.
Nu denne,... Guts Nächtle

Matze


  

Betrifft: weitere Variante Registerfarbe ... von: Matthias L
Geschrieben am: 08.11.2012 00:32:21

Hallo robert

Hab Deinen Korrekturvorschlag nicht verstanden.
Ich will in der selben Zeile bleiben.
Also nur Offset(, -1) oder eben Offset(0, -1)
Wobei man die 0(Null) aber auch weglassen kann.
Ich gehe nur eine Spalte nach links (also lese in Spalte(A) den Namen des Worksheet aus)
Übrigens waren der Code im Modul und in DieseArbeitmappe nur Überbleibsel die man nicht braucht

Hier eine ganz einfache Variante:
https://www.herber.de/bbs/user/82521.xls

Gruß Matthias


  

Betrifft: AW: weitere Variante Registerfarbe ... von: robert
Geschrieben am: 08.11.2012 07:35:28

Hallo Matthias,

probier mal in deiner 1.Datei Tabelle5 zu ändern.

Da kommt die Fehlermeldung-probier es mal aus ;-)

Gruß
robert


  

Betrifft: bei mir kommt keine Fehlermeldung von: Matthias L
Geschrieben am: 08.11.2012 08:02:29

Hallo robert

Hab mir die Datei jetzt nochmal vom Server zurückgeholt und an der auch getestet.
Es kommt keine Fehlermeldung und die Farben werden auch in den Registern geändert.







Also welche Fehlermeldung kommt den bei Dir?

Gruß Matthias


  

Betrifft: AW: bei mir kommt keine Fehlermeldung von: robert
Geschrieben am: 08.11.2012 08:32:18

Hallo Matthias,

hier kommt der Debugger

"With ActiveWorkbook.Worksheets(ActiveCell.Offset(, -1).Text).Tab"

die Zelle B5 wird eingefärbt, aber nicht der Tab-Reiter5 !

Habs aber mit Offic 2010 getestet-kanns das sein ?

Gruß
robert


  

Betrifft: es liegt vermutlich wirklich an Vers. XL2010 von: Matthias L
Geschrieben am: 08.11.2012 09:03:38

Hallo robert

Wegen der (mE) vielen Probleme dieser Version habe ich Office2010 ausgelassen.
Ich habe es in XL2007 geschrieben und in XL2003 getestet.

Gruß Matthias


  

Betrifft: auch 2003 bringt Fehler-aber Ende und aus ;-) owT von: robert
Geschrieben am: 08.11.2012 10:56:04




  

Betrifft: kann das bitte jemand Testen von: Matthias L
Geschrieben am: 08.11.2012 11:49:54

Hallo

robert schreibt es kommt ne Fehlermeldung. Bei mir aber nicht.
Ich würde gern wissen, woher der Fehler kommt und ob er bei anderen Usern auch vorkommt.
Einfach:- Zitat: aber Ende und aus gefällt mir nicht.
Das ist gleichbedeutend mit: Ich gebe auf und das gefällt mir aber nicht.
Es soll ja letztendlich auch ein "Aha"-Efekt (bei mir) erzielt werden, sollte robert Recht haben.

Ich möchte gern wissen warum erhält robert einen Fehler und ich nicht.
Ist jemand so nett und testet das mal an meiner 1.gesendeten Datei
Ich schaue heute abend wieder rein.

Gruß Matthias (jetzt nicht mehr im Netz)


  

Betrifft: ..es geht um diese Datei.... von: robert
Geschrieben am: 08.11.2012 15:21:34

https://www.herber.de/bbs/user/82516.xls

Gruß
robert


  

Betrifft: AW: ..es geht um diese Datei.... von: Werner
Geschrieben am: 08.11.2012 19:46:18

Hallo Robert,
nach doch einiger Zeit kann ich jetzt meine Thread weiter verfolgen
sorry, für die verspätete Rückmeldung.

Ich habe die letzte Datei von Dir 82516.xls jetzt geöffnet
und erhalte, wenn die den Zellinhalt von Zelle B5 von 1 auf 2 änder
folgenden Fehlerhinweis in XL2003 !

Laufzeitfehler '9' : Index außerhalb des gültigen Bereichs
Beim Debuggen bleibt er stehen bei
...
With ActiveWorkbook.Worksheets(ActiveCell.Offset(, -1).Text).Tab
...

Also: ICH gebe nicht auf ;)
Und freue mich seeehr, daß Du Dich der Thematik gemühst
und an einer Lösung interessiert bist !

Also : vorab vielen Dank für Deine Unterstützung
Natürlich gilt dieser Dank auch an ALLE ANDEREN in diesem Forum !

Besten Gruß
Werner

ps: habe den Thread als OFFEN gekennzeichnet !


  

Betrifft: Exceloptionen Markierung verschieben ... von: Matthias L
Geschrieben am: 08.11.2012 22:52:17

Hallo Werner

Da hast Du aber ne Menge durcheinander gebracht.
Die Beispieldatei habe ich hier ins Forum gestellt und nicht robert
robert hat geschrieben aber Ende & aus. Ich habe gesschrieben Ich gebe nicht auf.

So nun zum Problem was ihr wahrscheinlich habt:
Ich vermute in den Exceloptionen verschiebt ihr die Markierung nach Eingabe/Enter.
In meinen Einstellungen(Exceloptionen) verschiebe ich die Markierung nicht.

Deshalb klappt bei mir ActiveCell und bei Euch eben nicht.
Also entweder "Markierung verschieben" in den Optionen deaktivieren oder
statt ActiveCell eben Target benutzen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B5")) Is Nothing And Target.Count = 1 Then 'Range anpassen  _
oder auslesen
 With ActiveWorkbook.Worksheets(Target.Offset(, -1).Text).Tab
  Select Case Target.Value
    Case 1
    .Color = vbGreen
    Case 2
    .Color = vbYellow
    Case 3
    .Color = vbRed
   Case Else
    .Color = xlNone
  End Select
 End With
End If
End Sub
Gruß Matthias (von dem das Bsp. ist & der nicht aufgibt) ;-)


  

Betrifft: und hier noch die Erklärung ... von: Matthias L
Geschrieben am: 08.11.2012 23:11:30

Hallo zusammen



Wenn ihr also in den Exceloptionen die Markierung nach der Eingabe verschiebt
ist die Zelle(B5) nicht mehr die "ActiveCell", sondern Zelle(B6)
Da aber in Zelle(A6) keine Blattname steht sondern leer ist, kommt der IndexFehler

Gruß Matthias


  

Betrifft: Danke f.die Lösung und Nichtaufgabe;-)) Gruß von: robert
Geschrieben am: 09.11.2012 07:47:21

owT


  

Betrifft: Bitte - gern geschehen ... owT von: Matthias L
Geschrieben am: 09.11.2012 07:49:30




 

Beiträge aus den Excel-Beispielen zum Thema "Div Tab-Register einfärben je nach Zellinhalt"