Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1052to1056
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bedingte Formatierg Reihenfolge ändern

Bedingte Formatierg Reihenfolge ändern
27.02.2009 17:32:30
Jörg
Guten Abend an Alle
ich hab ein- bis zweihundert Zellen mit (unterschiedlichen) bedingten Formaten, die jetzt je eine weitere Format-Bedingung erhalten sollen (aber auch wiederum überwiegend unterschiedliche). Ich muß also fast jede Zelle einzeln anfassen. Das geht ja mit Button Hinzufügen - dumm bloß, daß die neu hinzuzufügende Bedingung vorrangig sein muß. Ich müßte also ZUSÄTZLICH zum Hinzufügen einer neuen Bedingung noch sämtliche vorhandenen Bedingungen erstmal löschen, um sie danach wieder hintendran zu hängen, damit die Hierarchie richtig ist.
Gibt's irgendwo in Excel einen Trick, mit dem ich die Reihenfolge der Formatierungsbedingungen verändern kann? (Im Archiv hab ich geguckt, aber das war nicht erfolgreich...)
Danke für'n Tip!
Jörg

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierg Reihenfolge ändern
27.02.2009 21:32:54
Reinhard
Hallo Jörg,
ich mal getestet, nimm ein leeres Blatt und zeichne dir ein makro auf während du in paar Zellen unterschiedlich vile bed. Formatierungen anlegst.
Mit dem aufgezeichneten Makro und meinem Ansatz kommst du vielleicht weiter.
mein makro bezieht sich auf bed. Formatierungen mit
Formel="irednwas"
Format---Muster Farbe auswählen.
Mein makro hat noch Fehler, nach dem Durchlauf hat man irgendwie überall die gleichen farben.
Ich blikc da noch nicht so durch warum und ob überhaupt.

Sub tt()
Dim Zelle, bf, N, F1, F2, F3, C1, C2, C3
For Each Zelle In ActiveSheet.UsedRange
bf = Zelle.FormatConditions.Count
Select Case bf
Case 1
F1 = Zelle.FormatConditions(1).Formula1
C1 = Zelle.FormatConditions(1).Interior.ColorIndex
Zelle.FormatConditions.Delete
Zelle.FormatConditions.Add Type:=xlExpression, Formula1:=F1
Zelle.FormatConditions(1).Interior.ColorIndex = 4
Zelle.FormatConditions.Add Type:=xlExpression, Formula1:=F1
Zelle.FormatConditions(2).Interior.ColorIndex = C1
End Select
If bf > 0 Then Application.Dialogs(xlDialogConditionalFormatting).Show
Next Zelle
End Sub


Gruß
Reinhard

Anzeige
AW: Bedingte Formatierg Reihenfolge ändern
28.02.2009 02:32:33
Daniel
Hi
das Tauschen der Bedingten Formate einer Zelle ist nicht so ganz trivial, aber dieses Makro sollte alle Fälle abdecken (für Excel 2002)

Sub Bed_Format_Tauschen()
Dim Zelle As Range
Dim i As Long, n As Long
Dim Fo1(1 To 3) As String
Dim Fo2(1 To 3) As String
Dim Op(1 To 3) As String
Dim FarbeInt(1 To 3) As Long
Dim FarbeSchrift(1 To 3) As Long
Dim NeueRF(2 To 3, 1 To 3)
Dim Anz As Long
Dim Typ(1 To 3) As Integer
Dim RefStyle As Long
'--- Umschalten auf Z1S1-Bezugsart
RefStyle = Application.ReferenceStyle
Application.ReferenceStyle = xlR1C1
'--- Neue Reihenfolge bei 2 Formaten
NeueRF(2, 1) = 2
NeueRF(2, 2) = 1
'--- Neue Reihenfolge bei 3 Formaten
NeueRF(3, 1) = 3
NeueRF(3, 2) = 1
NeueRF(3, 3) = 2
'--- Bedingte Formate tauschen
For Each Zelle In ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllFormatConditions)
With Zelle
Anz = .FormatConditions.Count
If Anz > 1 Then
'--- Bedingte Formate lesen
For i = 1 To Anz
With .FormatConditions(i)
Typ(i) = .Type
FarbeInt(i) = .Interior.ColorIndex
FarbeSchrift(i) = .Font.ColorIndex
Fo1(i) = .Formula1
If .Type = xlCellValue Then
Op(i) = .Operator
If Op(i) 


Gruß, Daniel

Anzeige
Bed.Form. Reihenfolge - Danke, Jungs...
28.02.2009 14:07:57
Jörg
..für die Anregung. Geht offenbar nicht ohne VBA. Werde in dem Sinne mal testen...
Schönes WE
Jörg
bedingte Formatierung auslesen
28.02.2009 21:05:52
Reinhard
Hallo Jörg,
vielleicht existiert im Internet schon fertiger Code der alle Möglichkeiten der bed. Formatierung abdeckt.
Du könntest ja mal nach markanten Codebefehlen der hiesigen Codes googeln.
add, formatconditions usw.
Diese Worte müssen ja in so einem Code vorkommen *denk*
Nachfolgend der Teilcode eines größeren Projekts was Jeannie ersetzt für ein Forum wo Jeannie nicht
funktioniert.
(jeannie siesht du hier oft wenn hier in Beiträgen Tabellenbereiche dargestellt werden, da ist dann immer
ein Link zu Jennie dabei falls du nicht weißt was Jeannie ist.
Mit dem nachfolgenden Code werden die bedingten Formatierungen eines Zellenbereiches ausgelesen.
Vielleicht nützt dir das ja was. Zumindest erkennst du ja daß es pronzipiell nicht schwierig ist alle bed.
Formatierungen auszulesen, aber halt sehr aufwändig alle Möglichkeiten abzudecken.
In deinem Fall weißt du ja welche bed. Formatierngen du beutzt hast , kannst also paar Möglichkeiten die
du gar nicht hast weglassen, macht den Code kürzer.
Gruß
Reinhard

Option Explicit
Public BF As String, Zelle As Range, i As Byte
Sub BedingteFormatierungEinlesen()
' Code in diesem Modul weitestgehend entwickelt von Ypsilon (Micha)
BF = "Bedingte Formatierung(en):" & vbLf
If Selection.FormatConditions.Count = 0 Then GoTo Ende
For Each Zelle In Selection
Zelle.Select
For i = 1 To Zelle.FormatConditions.Count
BF = BF & Zelle.Address(0, 0) & ": "
With Zelle.FormatConditions.Item(i)
If .Type = 1 Then
BF = BF & "Zellwert ist "
Select Case .Operator
Case 1
BF = BF & "zwischen "
BF = BF & .Formula1 & " und "
BF = BF & .Formula2 & vbLf
erfüllte_bedingung
Case 2
BF = BF & "nicht zwischen "
BF = BF & .Formula1 & " und "
BF = BF & .Formula2 & vbLf
erfüllte_bedingung
Case 3
BF = BF & "gleich "
BF = BF & .Formula1 & " "
erfüllte_bedingung
Case 4
BF = BF & "ungleich "
BF = BF & .Formula1 & " "
erfüllte_bedingung
Case 5
BF = BF & "größer "
BF = BF & .Formula1 & " "
erfüllte_bedingung
Case 6
BF = BF & "kleiner "
BF = BF & .Formula1 & " "
erfüllte_bedingung
Case 7
BF = BF & "größer gleich "
BF = BF & .Formula1 & " "
erfüllte_bedingung
Case 8
BF = BF & "kleiner gleich "
BF = BF & .Formula1 & " "
erfüllte_bedingung
End Select
ElseIf .Type = 2 Then
BF = BF & "Formel ist "
BF = BF & .Formula1 & vbLf
erfüllte_bedingung
Else
MsgBox "Unbekannter Typ: " & .Type & vbLf & "Admin anrufen!"
Exit Sub
End If
End With
Next
Next Zelle
Ende:
End Sub
Sub BedingteFormatierungEinlesen2()
If Selection.FormatConditions.Count = 0 Then Exit Sub
BF = "Bedingte Formatierung:" & vbLf
For Each Zelle In Selection
For i = 1 To Zelle.FormatConditions.Count
BF = BF & Zelle.Address(0, 0) & ": "
With Zelle.FormatConditions.Item(i)
Select Case .Type
Case 1
BF = BF & "Zellwert ist "
Nummer = .Operator
Case 2
BF = BF & "Formel ist "
Nummer = 9
Case Else
MsgBox "papst anbeten"
Exit Sub
End Select
End With
Call FormatFormel(Nummer, .Formula1, .Formula2)
Call erfüllte_bedingung
Next i
Next Zelle
End Sub
Sub erfüllte_bedingung()
With Zelle.FormatConditions.Item(i).Interior
'Farbe
If Not .ColorIndex = Empty Then BF = BF & "Bei erfüllter Bedingung wird die Zelle " & Zelle. _
Address(0, 0) & " mit dem Colorindex " & .ColorIndex & " eingefärbt" & vbLf
'Muster
If Not .Pattern = Empty Then BF = BF & "Bei erfüllter Bedingung wird die Zelle " & Zelle. _
Address(0, 0) & " mit dem Muster " & .Pattern & " versehen" & vbLf
'Musterfarbe
If Not .PatternColorIndex = Empty Then BF = BF & "Bei erfüllter Bedingung wird das  _
Zellenmuster " & Zelle.Address(0, 0) & " mit der Farbe " & .PatternColorIndex & " versehen" & vbLf
End With
With Zelle.FormatConditions.Item(i).Font
'Schriftfarbe -4105=Automatische farbe
If Not .ColorIndex = Empty Then BF = BF & "Bei erfüllter Bedingung wird die Zellenschrift  _
in " & Zelle.Address(0, 0) & " mit der Schriftfarbe " & .ColorIndex & " eingefärbt" & vbLf
'Schriftart
If Not .Name = Empty Then BF = BF & "Bei erfüllter Bedingung wird die Zelle " & Zelle. _
Address(0, 0) & " mit dem Font " & .Name & " versehen" & vbLf
'Schriftstärke
If Not .FontStyle = Empty Then BF = BF & "Bei erfüllter Bedingung wird die Zelle " & Zelle. _
Address(0, 0) & " mit der Schriftstärke " & .FontStyle & " versehen" & vbLf
'Schriftgrösse
If Not .Size Then BF = BF & "Bei erfüllter Bedingung wird die Zelle " & Zelle.Address(0, 0)  _
& " mit der Schriftgrösse " & .Size & " versehen" & vbLf
End With
With Selection.FormatConditions(i).Borders(xlLeft)
If Not .LineStyle = Empty Then BF = BF & "Bei erfüllter Bedingung erhält die Zelle " &  _
Zelle.Address(0, 0) & " links eine " & Linienart(.LineStyle) & "-Linie in der Breite " & Liniendicke(.Weight) & " mit Farbe " & .ColorIndex & vbLf
End With
With Selection.FormatConditions(i).Borders(xlRight)
If Not .LineStyle = Empty Then BF = BF & "Bei erfüllter Bedingung erhält die Zelle " &  _
Zelle.Address(0, 0) & " rechts eine " & Linienart(.LineStyle) & "-Linie in der Breite " & Liniendicke(.Weight) & " mit Farbe " & .ColorIndex & vbLf
End With
With Selection.FormatConditions(i).Borders(xlTop)
If Not .LineStyle = Empty Then BF = BF & "Bei erfüllter Bedingung erhält die Zelle " &  _
Zelle.Address(0, 0) & " oben eine " & Linienart(.LineStyle) & "-Linie in der Breite " & Liniendicke(.Weight) & " mit Farbe " & .ColorIndex & vbLf
End With
With Selection.FormatConditions(i).Borders(xlBottom)
If Not .LineStyle = Empty Then BF = BF & "Bei erfüllter Bedingung erhält die Zelle " &  _
Zelle.Address(0, 0) & " unten eine " & Linienart(.LineStyle) & "-Linie in der Breite " & Liniendicke(.Weight) & " mit Farbe " & .ColorIndex & vbLf
End With
'noch offen :-( gibt es die Möglichkeiten alle ? *grummel*
'    With Selection.Font
'        .Strikethrough = False
'        .Superscript = False
'        .Subscript = False
'        .OutlineFont = False
'        .Shadow = False
'        .Underline = xlUnderlineStyleNone
'    End With
End Sub
Sub FormatFormel(ByVal Nummer As Byte, ByVal Bed1, Optional ByVal Bed2)
On Error GoTo Fehler
Dim Wahl, Zelle, N
Wahl = Array("Dummy", "zwischen", "nicht zwischen", "gleich", "ungleich", "größer", "kleiner", " _
größer gleich", "kleiner gleich", "Formel ist")
Select Case Nummer
Case 1, 2
BF = BF & Wahl(Nummer) & Bed1 & "und" & Bed2 & vbLf
Case 3 To 9
BF = BF & Wahl(Nummer) & Bed1 & vbLf
Case Else
MsgBox "papst anbeten"
End Select
Exit Sub
Fehler:
MsgBox "bla"
End Sub
Function Liniendicke(ByVal Nummer) As String
'xlHairline, xlThin, xlMedium oder xlThick. Long Schreib-Lese-Zugriff.
Select Case Nummer
Case 1
Liniendicke = "xlHairline"
Case 2
Liniendicke = "xlThin"
Case -4138
Liniendicke = "xlMedium"
Case 4
Liniendicke = "xlxlThick"
Case Else
MsgBox "Fehler mit Liniendicke"
End Select
End Function
Function Linienart(ByVal Nummer) As String
Select Case Nummer
Case 1
Linienart = "xlContinuous"
Case -4115
Linienart = "xlDash"
Case 4
Linienart = "xlDashDot"
Case 5
Linienart = "xlDashDotDot"
Case -4118
Linienart = "xlDot"
Case -4119
Linienart = "xlDouble"
Case 13
Linienart = "xlSlantDashDot"
Case -4142
Linienart = "xlLineStyleNone"
Case Else
MsgBox "Fehler mit Linienart"
End Select
End Function


Anzeige
...wow !!
28.02.2009 21:44:06
Jörg
Stoff zum Nachdenken... Danke!
AW: ...wow !!
01.03.2009 04:06:54
Reinhard
hallo Jörg,
freut mich und sicher auch Micha, der Zweck ist ja das andere was von dem Code haben und seine Mühen nicht umsonst waren.
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige