Ich verstehe die Anweisung FormatConditions nicht

Liebe Community,

mit Reinhards Hilfe habe ich einen Code kennengelernt, mit dem ein Suchwort „Namen“ innerhalb eines angegebenen Range gefunden und gekennzeichnet wird:

.Range("$B$3:blush:AX$60").FormatConditions.Add Type:=xlExpression, \_
 '   Formula1:="=LINKS(B3;LÄNGE(""" & Namen & """))=""" & Namen & """"

Seit Tagen versuche ich mit der Excel-Hilfe zu verstehen, was die einzelnen Wörter für Funktionen haben.
Bereits beim .Range(…).FormatConditions.Add… komme ich nicht weiter, denn die Hilfe beschreibt, daß hier einem Range eine andere, bedingte Formatierung  h i n z u g e f ü g t  werden kann.
Das aber ist nicht das, was nachher dabei rauskommt, denn die Zelle mit dem Inhalt von „Namen“ wird ja  g e f u n d e n !! Weitere Informationen der Excel-Hilfe verwirren mich noch mehr, vermutlich, weil ich von Anbeginn einen falschen Denkansatz habe.

Gibt es eine Hilfe, ähnlich Selfhtml, wo auch für Dumme der Ablauf eines solchen Codes Schritt für Schritt erläutert wird?

Vielen Dank
Gruß
Pauli

Hallo Drambeldier,

danke für den Link, die Info dort hilft, mehr die Zusammenhänge und Abhängigkeiten zu verstehen. Mal sehen.

Gruß
Pauli

Hallo Pauli,

mit Reinhards Hilfe habe ich einen Code kennengelernt, mit dem
ein Suchwort „Namen“ innerhalb eines angegebenen Range
gefunden und gekennzeichnet wird:

ich glaube da liegt dein Denkfehler. Mein Code „sucht“ nix, „findet“ also auch nix. Der Code trägt Bedingung einer bed. Formatierung in alle Zellen des Zellbereichs ein. Diese bed. Formatierungen kennzeichnen dann farblich „ihre“ Zelle wenn die Bedingung erfüllt ist.

Mit Vba diese bed. Formatierungen in jede Zelle eines Zellbereichs eintragen geht bedeutend schneller als dein Code vorher arbeitet, der klappert lahmarschig Zelle für Zelle im Zellbereich ab und kennzeichnet dann die Zellen wo der gesuchte Begriff drinsteht.

.Range("$B$3:blush:AX$60").FormatConditions.Add Type:=xlExpression,
_
 ’   Formula1:="=LINKS(B3;LÄNGE(""" & Namen &
„“"))=""" & Namen & „“""

Seit Tagen versuche ich mit der Excel-Hilfe zu verstehen, was
die einzelnen Wörter für Funktionen haben.

Bereits beim .Range(…).FormatConditions.Add… komme ich
nicht weiter, denn die Hilfe beschreibt, daß hier einem Range
eine andere, bedingte Formatierung  h i n z u g e f ü g t
werden kann.

Ja, damit fügt man eine bed. Formatierung hinzu. Das funktioniert. Außer die Zelle hat schon 3 bed. Formatierungen, dann kommt ein Fehler. Oder Blatt ist geschützt o.ä…

Das aber ist nicht das, was nachher dabei rauskommt, denn die
Zelle mit dem Inhalt von „Namen“ wird ja  g e f u n d e n !!

Nein, sie wird NICHT gefunden, da wird nix gesucht. Beispiel, Zelle B5 färbt sich wenn ihr Zellinhalt dem gesuchten Namen entspricht. Dazu hat ja wohl die Zelle nicht „gesucht“, sie hat durch die bed. Formatierung quasi den Excelauftrag permanet ihren Zellinhalt zu überprüfen. Entspricht er „Namen“ frbt sie sich, wenn nicht, nicht.

Gruß
Reinhard

Hallo Reinhard,

herzlichen Dank für Deine verbale Erläuterung, somit wird einiges deutlich, was mir bislang so nicht klar war.
Ich bin erstaunt, wie Du auf solche Lösungen kommst. Kennst Du alle Codes, die VBA so anbietet? Das sind ja ungeheuer viele Möglichkeiten!

schönes Wochenende
Gruß
Pauli

…noch ein Nachsatz dazu
…jetzt ist der Groschen gefallen. Mit Hilfe der Excel-Taste „Bed.Formatierung“ im Startmenü habe ich n a c h Ablauf des Codes die bed. Formatierung der Zellen geprüft und mit dem Code verglichen. Nun kenne ich auch den Grund der vielen Gänsefüßchen.

Vielen Dank nochmal an die Hilfe
Gruß
Pauli

Hallo Pauli,

…jetzt ist der Groschen gefallen.

freut mich.

Mit Hilfe der Excel-Taste
„Bed.Formatierung“ im Startmenü habe ich n a c h Ablauf des
Codes die bed. Formatierung der Zellen geprüft und mit dem
Code verglichen. Nun kenne ich auch den Grund der vielen
Gänsefüßchen.

es ist halt so, Gänsefüßchen die in einer Formel in Excel auftauchen sollen mußt du in Vba doppelt in den Code schreiben.
Konkretes Beispiel, Du hast in A1 manuell eingetragen:
A1: =WENN(B1=„Meier“;"";„Schmidt“)

Um das gleiche mit Vba zu erreichen mußt du diese Codezeilen nehmen:
Range(„A1“).FormulaLocal = „=WENN(B1=“„Meier“";"""";"„Schmidt“")"
oder
Range(„A1“).Formula = „=IF(B1=“„Meier“","""","„Schmidt“")"
@Thomas (Falken) ja, FormulaR1C1 gibts auch :smile:

Wenn und If muß man nicht großschreiben. Beachte das SemiKolon bei Formulalocal (deutsch) und das Komma bei Formula (englisch).

Das mit den Gänsefüßchen bei Excelformeln mit Vba kann Tüftelei werden besonders bei langen, komplizierten Formeln. Tricks sich da was zu vereinfachen kenne ich nur einen.

So ein Gänsefuß ist das Zeichen 34, also Chr(34). Laut Tipps aus dem Internet soll man Chr(34) benutzen anstatt der der Gänsefüßchen die nur in Vba doppelt sind aber nicht in der Formel dann in Excel.

Ich habe das getestet und verworfen.

Gruß
Reinhard

Hallo Reinhard,

darf ich noch eine Frage zum gleichen Oberbegriff dieses Thread stellen?

Bei dem Code für Doppelsuchen vermisse ich das Kriterum.
Nach dem FormatConditions… folgt die Formel „Formula1:=“=ZÄHLENWENN($B$3:blush:AX$60;B3)>1"

Die Excelhilfe schreibt bei ZÄHLENWENN: zählt die nichtleeren Zellen eines Bereiches, deren Inhalte mit den Suchkriterien übereinstimmen.

Der Bereich ist klar und fixiert, das B3 als Suchkriterium aber ist die obere linke Zelle des Bereiches, in der z.B „ABC“ als Text steht. Wenn alle Zellen die gleiche bed. Formatierung als Formel haben, steht auch bei Zelle AX60 die Zelle B3 als Suchkriterium. Zellen gleichen Inhalts können aber auch in den Zellen C5 und AX1 stehen, die werden vom Suchkriterium B3 nicht erfaßt.

Was denke ich hier falsch?
Grüße von
Pauli

Hallo Pauli,

darf ich noch eine Frage zum gleichen Oberbegriff dieses
Thread stellen?

Nein, keinesfalls :smile:

Der Bereich ist klar und fixiert, das B3 als Suchkriterium
aber ist die obere linke Zelle des Bereiches, in der z.B „ABC“
als Text steht. Wenn alle Zellen die gleiche bed. Formatierung
als Formel haben, steht auch bei Zelle AX60 die Zelle B3 als
Suchkriterium. Zellen gleichen Inhalts können aber auch in den
Zellen C5 und AX1 stehen, die werden vom Suchkriterium B3
nicht erfaßt.

Du hättet Recht wenn ich nicht B3 sondern $B$3 genommen hätte:
Formula1:="=ZÄHLENWENN($B$3:blush:AX$60; $B$3 )>1
Dem ist/war aber nicht:

Sub tt()
Cells.FormatConditions.Delete
Range(„B3“).Select
Range(„B3:AX60“).FormatConditions.Add Type:=xlExpression, Formula1:="=ZÄHLENWENN($B$3:blush:AX$60; B3 )>1"
Range(„B3:AX60“).FormatConditions(1).Interior.ColorIndex = 3
End Sub

Gruß
Reinhard

Was denke ich hier falsch?
Grüße von
Pauli

Hallo Reinhard,

danke für Deine Antwort. Ähnliches hatte ich mir gedacht. Irritiert war ich nur deshalb, weil, wie ich schrieb, nach Ablauf der Routine die Überprüfung der in die Zellen eingetragene bed. Formatierung zeigte, daß überall B3 eingetragen war. Vermutlich wird aber beim Ablauf der Routine wirklich jede einzelne Zelle individuell behandelt.
Interessant wäre es, den Assembler-Code von ZÄHLENWENN einzusehen, das wäre aber ein neues Thema.

vielen Dank nochmal
beste Grüße
Pauli