ich habe Excel 2003. Geht das hier nicht???
Wenn doch, wie???
Die gleiche Frage für die Formatierung unter 2003.
Ich will nicht kopieren!!!, es soll flexibel sein.
Wenn ich den Hintergrund von A1 ändere, soll er auch
automatisch in A2 so sein. Das ist ja nur ein einfaches Bsp.
Hallo Werner,
in 97-2003 haste nur max. 3 Bedingungen bei der bed. Formatierung.
Die Anzahl in 2007 ist mir grad nicht bekannt.
Lösung für dein XL2003 geht m.W. nur mit Vba.
Aber auch nicht so einfach wie im pseudocode:
Farbe(A2)=farbe(A1), wenn A1 seine Farbe ändert.
Ist komplizierter, aber machbar. Excelformeln und auch Vba können nur manuell erzeugte Farben direkt auslesen, Farben die durch bed. Formatierung kommen auszulesen geht nicht direkt.
Vba muß alle bed. Formatierungsbedingungen nachstellen und diese auswerten.
Oder aber, bei unbekannten Bedingungen diese auslesen und auswerten.
Nenne mal die Bedingungen für A1, mal schauen…
Schwierig, was aber eher aufwendig, mühselig bedeutet, wäre wenn es vollkommen flexibel sein sollte. Also in A1 unbekannte Bedingungen herrschen und A2 soll trotzdem genauso ticken wie A1.
Nachfolgend mal Code der sowas ähnliches macht.
Daran kannst du erahnen was da alles abzuprüfen ist.
Gruß
Reinhard
Option Explicit
'Dim AppObject As New clsWorkbook
Public BF As String, Zelle As Range, i As Byte
'Sub initializeClass()
' Set AppObject.App = Application
'End Sub
'
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 :frowning: 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