Tab- Farben mit VBA-Schleife einstellen

22/10/2007 - 11:16 von Hans Alborg | Report spam
Hallo Gruppe,

Mit meinem Excel 2007 bin ich jetzt auf ein Problemchen gestoßen, das ich
nur umstàndlich lösen kann:

Mittels VBA werden Blàtter einer Mappe ausgesucht und deren TAB's von weiß
auf schwarz umgestellt.
Dann erscheint eine Messagebox, um die markierten Blàtter weiter zu
verarbeiten.

Damit kann ich aber den Vorgang auch abbrechen und die Routine beenden.
Jetzt sollen die schwarzen TAB's (Register) aber wieder weiß werden.

Problem: Schwarz ist wohl eine Grund- und Weiß eine Designerfarbe. Damit ist
es nicht so leicht, einfach eine Variable für beide Fàlle einzusetzen.

So etwa sieht der Codeteil aus:
'--
löschen:
col = 1
j = 0 ' Zahl zu druckender Tabellen
If Fzahl = 7 Then col = 255
For i = Worksheets.Count To 1 Step -1 'Blàtter rückwàrts zàhlen
Set wsAkt = Worksheets(i)
If Left$(wsAkt.Name, 6) = "Blatt (" Then 'andere Blàtter nicht beachten
If wsAkt.Cells(9, 1) <> "ü" Then
j = j + 1:
wsfa(j) = wsAkt.Name
With Worksheets(wsfa(j)).Tab
.Color = col 'xlThemeColorLight1
End With
End If
End If
Next i
If Fzahl = 7 Then Exit Sub

Fzahl = MsgBox("ausgewàhlt: " & j & "Tabellen", vbYesNo, "Anzahl")
If Fzahl = 7 Then GoTo löschen:
'--

"löschen:" ist hier die Sprungmarke, um die Schleife ein zweites Mal zu
durchlaufen, um die TAB's zurückzufàrben.
Das Fàrben soll mit der Variablen col passieren, der abgeklemmte Begriff
'xlThemeColorLight1 fàrbt die TAB's weiß, aber für schwarz kann ich ihn
wiederum nicht nutzen (oder?).
Besser als 'Tab.Color' ist wohl "Tab.ColorIndex", aber damit bekomme ich
auch kein Weiß.
"Keine Farbe" hatte ich übrigens probiert. Gefàllt mir nicht, weil dann die
Schrift grau (o.à.) wird.

Da es noch andere Registerfarben gibt, nur bestimmte Blàtter beachtet
werden, und von denen nur die mit dem "ü" gefàrbt werden, müßte ich die
ganze Schleife zweimal schreiben.
Geht das besser?

mfG,

Hans
 

Lesen sie die antworten

#1 Melanie Breden
22/10/2007 - 12:20 | Warnen spam
Hallo Hans,

"Hans Alborg" schrieb:

Mittels VBA werden Blàtter einer Mappe ausgesucht und deren TAB's von weiß auf schwarz umgestellt.
Dann erscheint eine Messagebox, um die markierten Blàtter weiter zu verarbeiten.

Damit kann ich aber den Vorgang auch abbrechen und die Routine beenden.
Jetzt sollen die schwarzen TAB's (Register) aber wieder weiß werden.

Problem: Schwarz ist wohl eine Grund- und Weiß eine Designerfarbe. Damit ist es nicht so leicht,
einfach eine Variable für beide Fàlle einzusetzen.



verwende die ThemeColor-Eigenschaft, damit kannst du alle Konstanten der
XLThemeColor-Klasse (siehe Objektkatalog) verwenden.

Deine Schleife kannst du auch in eine externe Sub auslagern:

Public Sub SetColor(lngColor As Long)
Dim i As Long

For i = Worksheets.Count To 1 Step -1
With Worksheets(i)
' 7 Zeichen statt 6 in deinem Code
If Left$(.Name, 7) = "Blatt (" Then
If .Cells(9, 1) <> "ü" Then
.Tab.ThemeColor = lngColor
End If
End If
End With
Next i
End Sub

und wie folgt aufrufen:

SetColor(xlThemeColorDark1) ' weiß
SetColor(xlThemeColorLight1)'schwarz


Mit freundlichen Grüssen
Melanie Breden

- Microsoft MVP für Excel -
www.melanie-breden.de

Ähnliche fragen