Reiter einfärben wenn
#1
servus zusammen,

für euch sicherlich schnell erledigt,

wenn ich zb. in Zelle B2 einen Wert eingebe... welche ist eigentlich egal, soll sich der Reiter automatisch Rot einfärben.

bei der Google suche finde ich schon das ein oder andere allerdings soll das ganze bei jedem Reiter passieren ausser bei den beiden ersten die index und übersicht heißen.

und da ist dann mein problem das ich diese kleinen änderungen leider nicht fehlerfrei hinbekomme.

hoffe ihr könnt mir helfen ...
PS: ich habe office 2003

Danke schonmal

Gruß
lion
Top
#2
Hi,

dann teste das mal so

Sub RegisterFärben()
Dim Blatt As Object

For Each Blatt In ActiveWorkbook.Sheets
    If Blatt.Name <> "Index" And Blatt.Name <> "Übersicht" And Blatt.Cells(2, 2) <> "" Then
        Blatt.Tab.Color = vbRed
    End If
Next Blatt
 
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 12 - mit VBAHTML 12.6.0


Gruß
Ich
Top
#3
coole sache werd den code morgen gleich mal ausprobieren...  


was mir noch eingefallen ist,  es wäre ganz hilfreich wenn excel die rot markierten reiter automatisch nach vorne schiebt...  allerdings nicht ganz, sondern frühestens auf Position 5. 
bsp: 
reiter 1 index 
reiter 2 Übersicht 
reiter 3 xy
etc...  
ab reiter 5,  die rot markierten. 

also wenn das irgendwie machbar is und euch / dir nich zu viel zeit raubt zu programmieren. 
Gruß
Top
#4
Hi,

dann so mit Sortierung.

Sub RegisterFärbenUndFarblichSortieren()
Dim Blatt As Object
Dim i As Integer, iNext As Integer

For Each Blatt In ActiveWorkbook.Sheets
    If Blatt.Name <> "Index" And Blatt.Name <> "Übersicht" And Blatt.Cells(2, 2) <> "" Then
        Blatt.Tab.Color = vbRed
    End If
Next Blatt
 
For i = 1 To Worksheets.Count - 1
    For iNext = i To Worksheets.Count
        If Worksheets(iNext).Tab.ColorIndex = xlNone Then
            Worksheets(iNext).Move before:=Worksheets(i)
        End If
    Next iNext
Next i
 
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Gruß
Ich
Top
#5
Servus und erstmal sorry das ich mich so lang nicht gemeldet habe aber ich war leider Krank.

hab den Code gerade ausprobiert aber er färbt leider den Reiter nicht Rot ein wenn ich etwas in Zeile B2 eingebe.

habe es auch zum Test in einer neuen Excel Datei ausprobiert, jedoch auch hier leider ohne erfolg

kannst du das ganze bitte nochmal kontrollieren? und wie gesagt ich habe excel 2003

Gruß und danke schonmal.
Top
#6
Hi,

das hatte ich elegant überlesen.

Dann gehört dieser Code hinter jede Tabelle mit Ausnahme von Index und Übersicht.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Blatt As Object
Dim i As Integer, iNext As Integer

Set Blatt = ThisWorkbook.ActiveSheet

If Target.Address = "$B$2" And Target.Value <> "" Then
    Blatt.Tab.Color = vbRed
      
    For i = 1 To Worksheets.Count - 1
        For iNext = i To Worksheets.Count
            If Worksheets(iNext).Tab.ColorIndex = xlNone Then
                Worksheets(iNext).Move before:=Worksheets(i)
            End If
        Next iNext
    Next i
      
End If

End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 12 - mit VBAHTML 12.6.0


Gruß
Ich
Top
#7
Moin und nur am Rande:
Zitat:Dann gehört dieser Code hinter jede Tabelle mit Ausnahme von Index und Übersicht. 

Es gibt das Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)-Ereignis in DieseArbeitsmappe.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • IchBinIch
Top
#8
Moin Ralf,

ich lerne immer noch dazu. Thx!

@Lion dann diesen Code nur hinter "DieseArbeitsmappe"

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Blatt As Object
Dim i As Integer, iNext As Integer

Set Blatt = ThisWorkbook.ActiveSheet

If Target.Address = "$B$2" And Target.Value <> "" Then
    If Blatt.Name <> "Index" And Blatt.Name <> "Übersicht" Then
        Blatt.Tab.Color = vbRed
      
        For i = 1 To Worksheets.Count - 1
            For iNext = i To Worksheets.Count
                If Worksheets(iNext).Tab.ColorIndex = xlNone Then
                    Worksheets(iNext).Move before:=Worksheets(i)
                End If
            Next iNext
        Next i
    End If
End If
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 12 - mit VBAHTML 12.6.0



Gruß
Ich
Top
#9
Hi!
Da ich weiß, dass Du mein Grätschen nicht als Klugscheißerei ansiehst, noch ein Tipp:
Du brauchst kein Objekt namens Blatt.
Dies wird dem Ereignismakro bereits mit der Variable Sh übergeben.

Freundliche Grüße
vom ollen Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • IchBinIch
Top
#10
(27.10.2016, 10:13)RPP63 schrieb: ...
Freundliche Grüße
vom ollen Ralf

:19: :19: :19:

Von "den Ollen" lernt man am meisten :32:
Wenn ich genauer hingesehen hätte, hätte mir das auch auffallen sollen Blush .
Womit wir wieder beim Thema wären...

Ich denke das kann Lion selbst korrigieren.

Gruß und Danke nochmal
Markus :100:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste