Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Format Fill: Patterned+Color tut nicht

Forumthread: Format Fill: Patterned+Color tut nicht

Format Fill: Patterned+Color tut nicht
13.08.2020 10:53:22
laura_v
Hallo zusammen,
ich bin mit meinem VBA-Latein am Ende und das ist für gewöhnlich ganz gut. Wenn ich nicht weiter weiß, google ich viel, lande meistens hier oder werfe den Makro-Rekorder an.
So auch hier. Im gesamten Skript möchte ich automatisiert ein Diagramm aus vielen (>100) Datenpunkten erstellen, so dass jeder Datenpunkt eine eigene Datenreihe ist und man ihn gezielt wegfiltern kann. Bestimmten Datenreihen (= Datenpunkten) möchte ich spez. Formatierungen geben, alle gemustert (patterned) mit Vordergrunds- und Hintergrundsfarbe.
Ich habe ein sehr abgespecktes Excel-File mit 5 Datenpunkten beigefügt (https://www.herber.de/bbs/user/139603.xlsm). Ich muss dazu sagen, ich bin nicht die effizienteste Programmiererin ;) Im Reiter "Plot" muss man auf den Button klicken. Die ersten 3 Punkte sollen rot gepunktet formatiert werden, die letzten beiden grün mit Konfettimuster.
Folgenden Code Schnippsel habe ich mit Hilfe des Makro-Rekorders zusammengestellt.

While l .ForeColor.RGB = RGB(255, 0, 0)
.BackColor.RGB = RGB(255, 255, 255)
.Patterned msoPattern70Percent
End With
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Visible = msoTrue
.Weight = 0.75
End With
ElseIf l > 2 And m .ForeColor.RGB = RGB(0, 255, 0)
.BackColor.RGB = RGB(255, 255, 255)
.Patterned msoPatternLargeConfetti
End With
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Visible = msoTrue
.Weight = 0.75
End With
End If
l = l + 1
Wend
Wie man im Excel schön sieht, sieht man weder das rote noch das grüne Muster. Ein schritt-für-schritt Debugging ergab, dass die Farbe korrekt umgesetzt wird als voll ausgefülltes Symbol und sobald der "Patterned" Befehl kommt, wird die Farbe nicht mehr berücksichtigt. Eine andere Reihenfolge bringt auch nichts, erst "Patterned", dann "ForeColor", weil dann gar kein Muster mehr erscheint. Ziemlich blöd, dass die Mustervordergrundsfarbe "ForeColor" heißt, aber auch die Farbe für die komplette Farbfüllung.
Ich weiß nicht mehr weiter und finde dazu auch nichts. Warum schlägt der Rekorder etwas vor, wenn es nicht funktioniert? >_ Für jede Hilfe wäre ich dankbar. Hoffe, das Beispiel ist nachvollziehbar.
Dankeschön und viele Grüße
Laura
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zu komplex
13.08.2020 11:28:31
Fennek
Hallo Laura,
m.M.n. kann man auch in EINER Datenreihe jeden Punkt einzeln einfärben.
mfg
AW: komplex viell., aber Formatierung tut ja nicht
13.08.2020 11:37:58
laura_v
Hallo Fennek,
korrekt, aber man kann dann keine einzelnen Datenpunkte in der Datenreihe wegfiltern. Und das ist für meine Anwendung zwingend erforderlich. Daher ist jeder Datenpunkt = eine Datenreihe. Und grundsätzlich zielt meine Frage darauf ab, warum die Formatierung nicht so tut, wie sie (laut Rekorder) tun sollte - unabhängig davon, ob es sich um eine Datenreihe mit einem oder mehreren Punkten handelt. Daran kann es doch nicht liegen, oder?
Viele Grüße
Laura
Anzeige
AW: komplex viell., aber Formatierung tut ja nicht
13.08.2020 12:51:09
peterk
Hallo Laura
Wenn Du auf "Patterned" verzichten kannst dann so:

If l  2 And n 
Mit "Patterned" hab ich es nicht hinbekommen. Achtung: In Deinem Code steht

ElseIf l > 2 And m 

aber die Variable "m" ist nicht definiert/zugeordnet. Um solche Fehler zu vermeiden solltest Du "Option Explicit" verwenden damit schreibfehler sofort ersichtlich werden. Und zum Schluss: Deinen Button kannst Du auch ohne "Select" erzeugen.

With ActiveSheet.Buttons.Add(1212, 29.25, 146.625, 49.5)
.OnAction = "updateDiagramm"
.Characters.Text = "Diagramm updaten"
With .Characters(Start:=1, Length:=47).Font
.Name = "Calibri"
.FontStyle = "Standard"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
End With
Peter
Anzeige
AW: komplex viell., aber Formatierung tut ja nicht
13.08.2020 13:07:42
laura_v
Hallo Peter,
danke für die nützlichen Infos zum Aufräumen :)
Ja, auf eins der beiden (Pattern oder Farbe) müsste ich verzichten. Ich habe im originalen Sheet aber so viele Punkte, dass Farben allein nicht ausreichen würden zur Unterscheidung :( ich finde es auch einfach nicht nutzerfreundlich, wenn der Makro-Rekorder sagt es geht und dann geht es nicht. Vielleicht findet sich doch was, der Verzicht wäre ein absoluter Notnagel.
Viele Grüße
Laura
Anzeige
AW: komplex viell., aber Formatierung tut ja nicht
13.08.2020 16:15:28
peterk
Hallo Laura
Dein Problem war wirklich eine harte Nuss ;-)

l = n
While l  2 And n 

AW: komplex viell., aber Formatierung tut ja nicht
13.08.2020 17:21:06
laura_v
Hallo Peter,
ich bin begeistert, Hammer! Da wäre ich in 10 kalten Wintern nicht draufgekommen.
Vielen vielen Dank, tut alles bestens! :)
Viele Grüße
Laura
Anzeige
AW: komplex viell., aber Formatierung tut ja nicht
13.08.2020 19:43:57
peterk
Hallo
Danke für die Rückmeldung und viel Spass beim Programmieren :-)
Peter
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige