Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA: Bedingte Formatierung - Formel auslesen

Betrifft: VBA: Bedingte Formatierung - Formel auslesen von: Boris
Geschrieben am: 01.09.2004 19:01:35

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
  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: FP
Geschrieben am: 01.09.2004 20:31:16

Hi Boris,

probier statt [a1].FormatConditions(1)....

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

... und schon paßt wieder alles ;-)

Servus aus dem Salzkammergut
Franz


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: Ulf
Geschrieben am: 01.09.2004 20:38:00

Das hast du aber jetzt nur mal so ins Blaue geschrieben, oder?

Ulf


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: FP
Geschrieben am: 01.09.2004 21:02:24

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)>5

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: K.Rola
Geschrieben am: 01.09.2004 21:26:35

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


  


Betrifft: Schön, dass ich nicht alleine verwirrt war...;-) von: Boris
Geschrieben am: 01.09.2004 23:52:11

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: ypsilon
Geschrieben am: 01.09.2004 20:31:20

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: K.Rola
Geschrieben am: 01.09.2004 20:46:09

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: yps
Geschrieben am: 01.09.2004 20:53:01

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: Boris
Geschrieben am: 02.09.2004 00:31:04

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


  


Betrifft: Genau daher komm ich auch auf meine Frage... von: Boris
Geschrieben am: 02.09.2004 00:25:37

Hi K.Rola,

...ich hatte das hier analog beantwortet:
https://www.herber.de/forum/messages/478521.html

Grüße Boris


  


Betrifft: Danke, aber... von: Boris
Geschrieben am: 01.09.2004 23:49:28

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: Christoph M
Geschrieben am: 01.09.2004 20:49:47

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)<4"

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)<4"
.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



  


Betrifft: Auch Dir vielen Dank... von: Boris
Geschrieben am: 01.09.2004 23:54:07

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


  


Betrifft: AW: VBA: Bedingte Formatierung - Formel auslesen von: K.Rola
Geschrieben am: 01.09.2004 20:50:36

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


  


Betrifft: Die Antwort klingt eigentlich recht simpel... von: Boris
Geschrieben am: 01.09.2004 23:47:36

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}


  


Betrifft: AW: Die Antwort klingt eigentlich recht simpel... von: K.Rola
Geschrieben am: 02.09.2004 00:57:55

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


  


Betrifft: AW: Die Antwort klingt eigentlich recht simpel... von: Boris
Geschrieben am: 02.09.2004 09:15:18

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


  


Betrifft: Erstmal: Danke an alle Beteiligten von: Boris
Geschrieben am: 01.09.2004 22:59:15

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


 

Beiträge aus den Excel-Beispielen zum Thema "VBA: Bedingte Formatierung - Formel auslesen"