Bedingtes Format auslesen und auflisten

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Bedingtes Format auslesen und auflisten
von: Dieter(Drummer)
Geschrieben am: 09.11.2015 18:29:39

Guten Abend VBA Spezialisten.
Dieser Code soll die bedingten Formate der markierten Zellen, ab Zelle O2, auflisten. Was muss am Code geändert werden, damit es funktioniert.
Danke für evtl. Lösung und
Gruß, Dieter(Drummer)
Code von Herber:

  • 
    Sub FormCond()
       Dim iFormula As Integer, iColorA As Integer
       Dim iColorB As Integer
       With Range("A1").FormatConditions(1)
          iFormula = .Formula1
          iColorA = .Font.ColorIndex
          iColorB = Range("A1").Font.ColorIndex
          If iColorB = -4105 Then iColorB = "'Automatisch'"
          If Range("A1").Value = iFormula Then
             MsgBox "Bedingung '" & iFormula & "' ist erfüllt" _
                & vbLf & "Die aktuelle Schriftfarbe ist " & iColorA
          Else
             MsgBox "Bedingung '" & iFormula & "' ist nicht erfüllt" _
                & vbLf & "Die aktuelle Schriftfarbe ist " & iColorB
          End If
       End With
    End Sub


  • Bild

    Betrifft: Dein Code ist für einen tauglichen Ansatz ...
    von: Luc:-?
    Geschrieben am: 09.11.2015 18:45:29
    …leider viel zu „simpel“, Dieter,
    denn das ist per sé ein hochkomplexes Problem. Du versuchst eine Lösung nach (von mir nach historischer Reihenfolge so genanntem) Methodenkomplex 2 zu erreichen, wobei es auf die Auswertung der BedingtFormat-Fmln ankommt. Dazu gibt's etliche Ansätze und Diskussionen im Netz, wobei das 1.Problem bei einer lokalen XlVersion darin besteht, dass die Fml nur lokal abrufbar ist, die vbFkt Evaluate aber Fmln in US-Original-Notation benötigt. Das Problem ist zwar lösbar, aber es gibt noch einen Haufen andere, zB ab Xl12/2007 mehrere unterschiedlich BedingtFormat-Objekte.
    Da das Auslesen der Fmln und zugehörigen Formate nicht dein Problem zu sein scheint, könntest du ab deiner XlVersion mit PgmCodes auf der Basis der objekt­begründenden Range-Eigenschaft .DisplayFormat mehr anfangen, um festzustellen, welche Bedingung erfüllt ist.
    Gruß, Luc :-?

    Besser informiert mit …

    Bild

    Betrifft: AW: Danke Luc:-?, aber
    von: Dieter(Drummer)
    Geschrieben am: 09.11.2015 18:56:53
    Hi Luc:-?,
    danke für die Rückmeldung.
    Das ist dann wohl ein sehr komplexes Thema, mit z.Zt. noch keiner Lösung für mich. Den Code hatte ich ja aus diesem Forum und kann dann wohl nicht für meinen Zweck genutzt werden, zumal ich in VBA sehr unbedarft bin.
    Gruß, Dieter(Drummer)

    Bild

    Betrifft: Der gezeigte Code listet die Formate der ...
    von: Luc:-?
    Geschrieben am: 09.11.2015 19:13:14
    …BedingtFormat-Typen 1&2 nicht nur auf, sondern versucht auch festzustellen, welche erfüllt sind, Dieter;
    wenn du diesen aus dem Forum hast (oder besser aus seinem Archiv?), mag der schon älter sein und fktioniert so nur bei sehr einfachen BedingtFormatFmln.
    Du solltest nun mitteilen, was du wirklich benötigst, eine simple Auflistung von Fmln und Formaten der BedingtFormatierungen eines Blattes oder auch noch, ob sie erfüllt sind. Dann kann dir evtl auch geholfen wdn.
    Luc :-?

    Bild

    Betrifft: AW: Mir wäre sehr geholfen, wenn
    von: Dieter(Drummer)
    Geschrieben am: 09.11.2015 19:27:32
    ... eine simple Auflistung von Fmln und Formaten der BedingtFormatierungen eines Blatt (markierter Bereich) und ob sie erfüllt sind. Dies sollte dann für den markierten Bereich gelten. Die Auflistung kann dann im akt. Tabellenblatt, ab A1 beginnen.
    Danke für deine evtl. weitere Hilfe.
    Gruß, Dieter(Drummer)

    Bild

    Betrifft: Dazu muss ich einen anderen PC verwenden, ...
    von: Luc:-?
    Geschrieben am: 09.11.2015 23:00:57
    …Dieter;
    mal sehen, ob und wann ich dazu komme… ;-)
    Luc :-?

    Bild

    Betrifft: Nur mal als schnelles Bsp mit stark ...
    von: Luc:-?
    Geschrieben am: 10.11.2015 01:34:54
    …eingeschränkter Anwendbarkeit, Dieter,
    um zu zeigen, in welche Richtung das geht:

    Sub ConFormat()
        Const adErgStart$ = "C1"    '<--anpassen!
        Dim cfn As Long, cfx As Long, rix As Long, cfIcl As Long, _
            xZ As Range, cf As FormatCondition
        On Error GoTo fx
        For Each xZ In ActiveWindow.RangeSelection
            cfn = xZ.FormatConditions.Count
            If CBool(cfn) Then
                For cfx = 1 To cfn
                    On Error Resume Next
                    Set cf = xZ.FormatConditions(cfx): On Error GoTo fx
                    If Not cf Is Nothing Then
                        cfIcl = cf.Interior.Color
                        Range(adErgStart).Offset(rix, 0) = xZ.AddressLocal(0, 0)
                        Let Range(adErgStart).Offset(rix, 1) = _
                            xZ.DisplayFormat.Interior.Color = cfIcl
                        Range(adErgStart).Offset(rix, 2) = cfIcl
                        Range(adErgStart).Offset(rix, 3) = "'" & cf.Formula1
                    End If
                    Set cf = Nothing: rix = rix + 1
                Next cfx
            End If
        Next xZ
    fx: If CBool(Err.Number) Then _
            MsgBox Err.Description, vbCritical, "Fehler " & Err.Number
    End Sub
    Da ich zZ nicht an so etwas arbeite, schon gar nicht für Versionen ab Xl14/2010, musst du das selber auf alle Typen ausbauen oder ggf noch'n paar Wochen bzw Monate warten… ;-)
    Morrn, Luc :-?

    Bild

    Betrifft: AW: Das ist schon eine gute Lösung
    von: Dieter(Drummer)
    Geschrieben am: 10.11.2015 09:06:03
    Guten Morgen Luc:?,
    sorry, dass ich mich jetzt erst melde ... brauchte etwas Schlaf.
    Danke für deine bisherige Lösung, die schon prima ist! Wenn ich den Bereich, in dem die Bedingten Formate sind, markiere, die Startzelle (Beginn der Auflistung, im Makro), angebe, bekomme ich schon die Angaben welche Zelle, ob wahr/falsch, die Farbnummer und bei was die bed. Formatierung greifen soll.
    z.B. für Zelle M16-M17:
    M16 FALSCH 255 =60
    M16 FALSCH 16737843 =70
    M16 FALSCH 32768 =80
    M17 FALSCH 255 =60
    M17 FALSCH 16737843 =70
    M17 FALSCH 32768 =80
    Hier geht darum, ob das Jahresalter, 60, 70 oder 80, erreicht ist und es wird entsprechend optisch farblich erkenntlich.
    Dein Makro hilft mit schon sehr! Falls du noch eine verbesserte Version entwickeln solltest, wäre toll, wenn über den Ausgabespalten der Text stehen würde: Zelle, Ja/Nein, Farbnummer, Ergebnis. Ich kann das natürlich auch selbst vorher über den Startzellen der Auflistung eingeben.
    Ich warte gerne auf eine bessere Lösung, egal wie lange ...
    Erstmal herzlichen Dank und einen schönen Tag.
    Gruß, Dieter(Drummer)

    Bild

    Betrifft: Na, denn iss' ja (vorerst) jut...! ;-) owT
    von: Luc:-?
    Geschrieben am: 10.11.2015 14:15:25
    :-?

     Bild

    Beiträge aus den Excel-Beispielen zum Thema "Bedingtes Format auslesen und auflisten"