Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Bedingte Formatierung - Formel auslesen

VBA: Bedingte Formatierung - Formel auslesen
01.09.2004 19:01:35
Boris
Hi Leute,
in A1 ist eine bedingte Formatierung hinterlegt:
Formel ist:
=WOCHENTAG(A1;2)>5
Jetzt möchte ich diese Formel per VBA auslesen. Allerdings scheint es dabei notwendig zu sein, die Zelle A1 auch zu selektieren, da es sonst aufgrund der relativen Zellengabe in der bedingten Formatierung auch zu nem relativen Ergebnis kommt...Warum nur?

Sub test()
[a1].Select
MsgBox [a1].FormatConditions(1).Formula1 'ergibt =WOCHENTAG(A1;2)>5
[z100].Select
MsgBox [a1].FormatConditions(1).Formula1 'ergibt =WOCHENTAG(Z100;2)>5, obwohl ich [a1] voranstelle
End Sub

Also spielt die Referenz für die FormatConditions (hier: [a1]) dabei wohl überhaupt keine Rolle?!? Kann mir das jemand kurz erläutern?
Grüße Boris
Anzeige
AW: VBA: Bedingte Formatierung - Formel auslesen
FP
Hi Boris,
probier statt [a1].FormatConditions(1)....
Range("A1").FormatConditions(1).Formula1
... und schon paßt wieder alles ;-)
Servus aus dem Salzkammergut
Franz
AW: VBA: Bedingte Formatierung - Formel auslesen
Ulf
Das hast du aber jetzt nur mal so ins Blaue geschrieben, oder?
Ulf
AW: VBA: Bedingte Formatierung - Formel auslesen
FP
Hi Ulf,
bin gerade sprachlos :-o
aktive Zelle c2 enthält keine bedingte Formatierung !
a10 die bedingte Formatierung von Boris
debug.print Range("a10").FormatConditions(1).formula1
Antwort: =WOCHENTAG(C2;2)&gt5
d.h. das wäre die bedingte Formatierung in C2, falls C2 eine bedingte Formatierung enthalten würde
der Befehl
debug.print Range("a100").FormatConditions(1).formula1
verursacht einen Fehler, da A100 keine Bedingte Formatierung enthält ( ist soweit ja logisch )
Aber, warum wandelt VBA die bedingte Formatierung der Range-Angabe in die entsprechende bedingte Formatierung der gerade aktiven Zelle um ?
Sehr verwirrtes
Servus aus dem Salzkammergut
Franz
Anzeige
AW: VBA: Bedingte Formatierung - Formel auslesen
K.Rola
Hallo,
das ist doch die Grundlage, auf der das Übertragen von Formaten per Formatpinsel über-
haupt erst möglich ist, denk mal drüber nach.
Gruß K.Rola
Schön, dass ich nicht alleine verwirrt war...;-)
Boris
Hi Franz,
...aber K.Rola hat die - zumindest für mich - logische Erklärung geliefert.
Ich habe auch dort direkt die Folgefrage deponiert.
Danke und Grüße
Boris
Anzeige
AW: VBA: Bedingte Formatierung - Formel auslesen
ypsilon
hi Boris,
da hast du dir ja ein hübsches thema ausgesucht ;-)
kennst du das schon ?
http://home.media-n.de/ziplies/gepackt/fremd/bedingte_form_auslesen.zip
ansonsten nepumuk (ist momentan der einzige der mir so einfällt *grins*) mal direkt ansprechen (gib mal deine erkenntnisse in verständlicher form weiter)
cu Micha
Anzeige
AW: VBA: Bedingte Formatierung - Formel auslesen
K.Rola
Hallo,
hast du das mal gestestet? Ist vom Ansatz her schon falsch, weil Evaluate generell
nur mit englischen Formeln zurechtkommt. Wenn die Syntax der deutschen Formel zufällig
mit der der englischen übereinstimmt, klappts natürlich genauso zufällig.
Gruß K.Rola
AW: VBA: Bedingte Formatierung - Formel auslesen
yps
hi L.Vira
nö, ist ungetestet
nur durch zufall (Hajo treibt sich ja hier scheinbar nicht mehr rum) gefunden und an Boris weitergegeben
wenn das sowieso jetzt sein hobby wird ist es doch schön wenn wenigstens einer mir in verständlicher form erklären kann wie das funktioniert :-)
cu Micha
Anzeige
AW: VBA: Bedingte Formatierung - Formel auslesen
Boris
Hi Micha,
Hajo treibt sich ja hier scheinbar nicht mehr rum
Schau dir die Antworten einer gewissen Annett mal genauer an.
Irgendwie erinnern die mich sehr stark an Hajo... :p
Grüße Boris
Danke, aber...
Boris
Hi Micha,
...mir ging es hier mal wieder - wie sooft - nur um das Prinzip. Ich möchte die Dinge einfach kapieren. Diese Frage entstand aus einem heutigen Beitrag "Evaluate", weil ich damit noch ein wenig experimentiert hatte.
Danke und Grüße
Boris
AW: VBA: Bedingte Formatierung - Formel auslesen
01.09.2004 20:49:47
Christoph
Hi Boris,
ich hab's mal eben bei XP-probiert. Das gibt's das gleiche Phänomen. Allerdings wird bei bedingter Formatierung mit absoluten Zellbezug, die richtige Formel ausgegeben.
"=WOCHENTAG($A$2; 2) Ich kann mir das nur so vorstellen, dass beim Ausführen des Codes die Formel mit relativem Zellbezug auf die gerade selektierte Zelle interpretiert, bzw. berechnet wird.
übrigens wird bei dem folgenden Code der realtive Zellbezug falsch gesetzt, wenn nicht die Zelle "A2" selektiert ist:
Sub OhneSelect()
With Range("A2:A3")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WOCHENTAG(A2; 2) .FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub

Mit dem Recorder aufgenommen (also selektiert) funktioniert das fehlerfrei:

Sub Makro1()
Range("A2:A3").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WOCHENTAG(A2; 2)<4"
Selection.FormatConditions(1).Interior.ColorIndex = 6
End Sub
Gruß
Christoph

Anzeige
Auch Dir vielen Dank...
Boris
Hi Christoph,
...ich denke, dass die Erläuterung von K.Rola das "Rätsel" gelöst hat.
Dort habe ich auch noch gefragt, wie man dennoch ohne Slektiererei die Formel (ohne Anpassung der Bezüge) auslesen kann.
Danke und Grüße
Boris
AW: VBA: Bedingte Formatierung - Formel auslesen
K.Rola
Hallo Boris,
selektiere mal z.B. F4 und führ den Code aus, dann wirds vielleicht klarer. Im Grunde
wird, je nach selektierter Zelle, der Bezug relativ ausgegeben, wenn er relativ festgelegt ist. Würdest du A1 weglassen, käm es zu einem Fehler, wenn die selektierte Zelle keine bedingte Formatierung hätte.
Gruß K.Rola
Anzeige
Die Antwort klingt eigentlich recht simpel...
Boris
Hi K.Rola,
dass es mit der relativen Referenz zusammenhängt, hab ich mir ja auch schon gedacht.
Also wird der Bezug - sofern relativ - immer an die gerade aktive Zelle angepasst - und [a1] liefert nur die Ursprungs(relativ)formel.
Folgefrage: Wie kann ich denn nun die Formel aus der bedingten Formatierung in A1 auslesen, ohne A1 zu selektieren - also ohne relative Anpassung der Bezüge?
Gibt´s da auch ne Möglicheit?
BTW: Das interessiert mich einfach nur mal - ich habe keine riesen Aktion damit vor.
Danke und Grüße
{Boris}
Anzeige
AW: Die Antwort klingt eigentlich recht simpel...
K.Rola
Hallo Boris,
also um sicher zu sein, könnte man ja einen Bereich aller Zellen mit FormatConditions
setten und dann selektieren. Ich weiß, das ist verpönt und deshalb werde ich mal nach einer Alternative suchen.
Das Ganze macht eigentlich nur Sinn, wenn man ermitteln will, ob die Bedingung eingetreten ist, wozu sonst sollte man die Formel auslesen wollen? Ist es das, was
du vorhast?
Gruß K.Rola
Anzeige
AW: Die Antwort klingt eigentlich recht simpel...
Boris
Hi K.Rola,
Ist es das, was du vorhast?
Prinzipiell ja, wobei ich - wie bereits erwähnt - derzeit nix Riesiges vorhabe.
Es war nur ein kleines Teilproblem, und diesem möchte ich nur gerne "auf die Schliche" kommen. Wer weiss, wofür es noch gut sein kann :p
Es beruhigt mich aber gewissermaßen, dass selbst die Meisterin aller Codezeilen keine Antwort aus der Pistole parat hat :p
Gleichwohl bin ich - wie immer - an deiner genialen Lösung sehr interessiert.
Grüße Boris
Anzeige
Erstmal: Danke an alle Beteiligten
Boris
Hi K.Rola, Franz, Micha, Christoph und Ulf,
musste leider kurzfristig den Rechner verlassen - daher erst jetzt ne Reaktion.
Werde mir jetzt erstmal alles genau anschauen - dann melde ich mich wieder.
Danke und bis gleich!
Grüße Boris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bedingte Formatierung in Excel VBA auslesen


Schritt-für-Schritt-Anleitung

Um die bedingte Formatierung in einer Excel-Tabelle per VBA auszulesen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“ im Projekt-Explorer und wähle Einfügen > Modul.

  3. Füge den VBA-Code ein: Kopiere und füge den folgenden Code in das Modul ein:

    Sub test()
       Range("A1").Select
       MsgBox Range("A1").FormatConditions(1).Formula1 ' Gibt die Formel der bedingten Formatierung in A1 aus
    End Sub
  4. Führe das Makro aus: Drücke F5 oder wähle Run um das Makro auszuführen. Das Popup-Fenster zeigt dir die Formel der bedingten Formatierung in Zelle A1 an.


Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des Bereichs": Dieser Fehler tritt auf, wenn die ausgewählte Zelle keine bedingte Formatierung hat. Stelle sicher, dass die Zelle, auf die du zugreifst, tatsächlich eine bedingte Formatierung besitzt.

  • Relative Zellbezüge: Wenn du versuchst, die Formel aus einer Zelle auszulesen, die nicht ausgewählt ist, kann es zu einer Veränderung des Zellbezugs kommen. Nutze die Range-Objekte anstelle von direkten Zellreferenzen, um dies zu vermeiden. Beispiel:

    MsgBox Range("A1").FormatConditions(1).Formula1

Alternative Methoden

Eine alternative Methode ohne Auswahl der Zelle könnte so aussehen:

Sub BedingteFormatierungOhneSelect()
    Dim fc As FormatCondition
    Set fc = ThisWorkbook.Sheets("Tabelle1").Range("A1").FormatConditions(1)
    MsgBox fc.Formula1
End Sub

Diese Methode greift direkt auf die bedingte Formatierung zu, ohne die Zelle auszuwählen, was die Notwendigkeit der relativen Anpassung der Bezüge umgeht.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du die bedingte Formatierung in einem Bereich von Zellen hinzufügen und auslesen kannst:

Sub BeispielBedingteFormatierung()
    With Range("A1:A10")
        .FormatConditions.Delete ' Vorhandene Formatierungen löschen
        .FormatConditions.Add Type:=xlExpression, Formula1:="=WOCHENTAG(A1;2)>5"
        .FormatConditions(1).Interior.ColorIndex = 6 ' Hintergrundfarbe ändern
    End With

    MsgBox Range("A1").FormatConditions(1).Formula1 ' Formel auslesen
End Sub

Tipps für Profis

  • Verwende Evaluate: Mit Application.Evaluate kannst du Formeln dynamisch auswerten, beachte jedoch, dass dies nur mit englischen Formeln funktioniert.

  • Debugging: Nutze Debug.Print um Ausgaben in das Direktfenster zu senden. Das hilft dir, den Code effizient zu testen.

  • Vermeide die Verwendung von Select: Durch die direkte Verwendung von Range-Objekten kannst du deinen Code optimieren und effizienter gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die Formel einer bedingten Formatierung ohne Auswahl einer Zelle auslesen?
Du kannst die Range-Objekte direkt ansprechen, ohne die Zelle auszuwählen, wie im Beispiel oben gezeigt.

2. Was passiert, wenn die Zelle keine bedingte Formatierung hat?
Wenn die Zelle keine bedingte Formatierung hat, wird ein Fehler angezeigt. Stelle sicher, dass die Zelle die Formatierung enthält, bevor du darauf zugreifst.

3. Warum ist die relative Zellreferenz wichtig?
Die relative Zellreferenz ist wichtig, da VBA die Formel entsprechend der aktiven Zelle interpretiert. Um dies zu vermeiden, solltest du immer absolute Bezüge verwenden, wenn du die Formel auslesen möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige