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

Forumthread: VBA: Problem mit Pattern / Colorindex

VBA: Problem mit Pattern / Colorindex
06.12.2006 14:09:13
Andreas
Hallo,
ich hab da ein unschönes Problem... wenn ich einer Zeile eine andere Hintergrundfarbe geben will, dann wird dabei das Muster "gelöscht" bzw. wohl auf Solid gesetzt.
Mein Workaround ist:
pat = Cells(zeile, spalte).Interior.Pattern
Cells(zeile, spalte).Interior.Color = Cells(searching_legende.Row, 2).Interior.Color
Cells(zeile, spalte).Interior.Pattern = pat
Schön finde ich das aber nicht...
Wenn ich nur die zweite Zeile verwende, dann verschwindet das Pattern von cells(zeile, spalte)
Wenn ich über Makroaufzeichnung das Pattern auf "solid" stelle, dann generiert mir die Aufzeichnung folgenden Syntax:
With Selection.Interior
.ColorIndex = 0
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
Dabei werden aber die Color-Angaben (glücklicherweise) nicht(!) überschrieben. Bedeutet hier .colorindex=0 soviel wie "laß alles für Farben beim Alten"?
Vielleicht hat jemand mal kurz Zeit, mir zu erklären, wie ich Hintergrundfarbe und Muster von Zellen in VBA sauber ansteuere? (Setzen und löschen)...
Besten Dank!
Gruß,
Andreas
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das findest du in der Online-Hilfe von VBA,...
06.12.2006 17:55:29
VBA,...
...Andreas!
Farbe (.Color) und Farbindex (.ColorIndex) - ist nicht dasselbe - findest du in bezug auf Range für .Font, .Interior und .Pattern (also danach .C...r oder .C...r.Index). Für automatische Farbgebung steht die xlKonstante xlAutomatic, die verschiedene negative Werte haben kann. Bei Color wäre 0 = Schwarz, bei den Indizes aber wohl gleibedeutend mit automatisch, was normalerweise Schwarz (Schrift) oder Weiß (Hintergrund) bedeutet. Ansonsten zählen die Indizes nur die 40-56 dafür vorgesehenen Speicherplätze durch; die Belegung kann individuell festgelegt wdn.
.Color verlangt den dezimalen Aufrechnungswert aus der RGB(rot, grün, blau)-Fkt. Man kann aber auch die RGB-Fkt zuweisen.
xlSolid ist die Konstante für ein (Standard-)Pattern ohne Muster. Dass .Pattern verschwindet ist wohl ein Reihenfolgeproblem, das auch bei manueller Einstellung auftreten kann. Richtig scheint mir 1. ...Interior.C...=..., 2. ...Pattern=..., 3. ...PatternColor...=... zu sein.
Gruß Luc :-?
PS: Noch mal nachlesen!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Hintergrundfarbe und Muster in Excel VBA effektiv steuern


Schritt-für-Schritt-Anleitung

Um die Hintergrundfarbe und das Muster von Zellen in Excel VBA korrekt zu steuern, kannst du die folgenden Schritte befolgen:

  1. Zelle auswählen: Wähle die Zelle oder den Zellbereich aus, dessen Hintergrundfarbe und Muster du ändern möchtest.

    With Selection.Interior
  2. Muster zuweisen: Setze das Muster, das du verwenden möchtest. Um das Muster auf "Solid" zu setzen, verwende die Konstante xlSolid.

    .Pattern = xlSolid
  3. Farbe zuweisen: Setze die Hintergrundfarbe. Du kannst entweder den Farbindex oder die RGB-Funktion verwenden.

    .Color = RGB(255, 255, 255) ' Setzt die Farbe auf Weiß
  4. Musterfarbe zurücksetzen: Um die Musterfarbe automatisch zu setzen, kannst du xlAutomatic verwenden.

    .PatternColorIndex = xlAutomatic
  5. Codebeispiel:

    With Selection.Interior
       .Pattern = xlSolid
       .Color = RGB(255, 255, 255) ' Weiß
       .PatternColorIndex = xlAutomatic
    End With

Häufige Fehler und Lösungen

  • Problem mit dem Muster: Wenn beim Setzen der Farbe das Muster verschwindet, kann das an der Reihenfolge der Befehle liegen. Stelle sicher, dass du zuerst die Farbe und dann das Muster setzt.

  • Farbindex nicht richtig gesetzt: Wenn .ColorIndex = 0 verwendet wird, bedeutet das nicht, dass die Farbe erhalten bleibt. Es setzt die Farbe auf Schwarz. Verwende stattdessen xlAutomatic, wenn du die automatische Farbzuweisung beibehalten möchtest.


Alternative Methoden

Du kannst auch die Eigenschaften von Interior.Pattern und Interior.Color direkt in einer Zeile festlegen, um den Code zu vereinfachen. Zum Beispiel:

Cells(zeile, spalte).Interior.Color = RGB(255, 0, 0) ' Rot
Cells(zeile, spalte).Interior.Pattern = xlSolid

Diese Methode kann hilfreich sein, um mehrere Zellen gleichzeitig zu formatieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Interior.Pattern und die Interior.Color in VBA verwenden kannst:

  1. Hintergrundfarbe auf Gelb setzen:

    Cells(1, 1).Interior.Pattern = xlSolid
    Cells(1, 1).Interior.Color = RGB(255, 255, 0) ' Gelb
  2. Muster und Farbe für einen gesamten Bereich:

    Range("A1:B10").Interior.Pattern = xlSolid
    Range("A1:B10").Interior.Color = RGB(0, 255, 0) ' Grün

Tipps für Profis

  • Nutze PatternColorIndex klug, um Musterfarben dynamisch zu ändern. Du kannst Variablen verwenden, um deine Farbwahl zu optimieren.
  • Experimentiere mit verschiedenen Pattern-Werten wie xlDiagonalUp, xlChecker, um interessante Effekte zu erzielen.
  • Halte deinen Code ordentlich und klar, indem du Kommentare hinzufügst, um die Bedeutung der einzelnen Zeilen zu erklären.

FAQ: Häufige Fragen

1. Wie kann ich das Muster ohne die Farbe ändern? Du kannst das Muster ändern, ohne die Farbe zu beeinflussen, indem du die Reihenfolge der Befehle anpasst. Setze zuerst das Muster und ändere dann die Farbe.

2. Was ist der Unterschied zwischen .Color und .ColorIndex? .Color verwendet RGB-Werte für die Farbauswahl, während .ColorIndex auf vordefinierte Farbwerte verweist, die in Excel verfügbar sind.

3. Was passiert, wenn ich .PatternColorIndex = xlAutomatic setze? Das setzt die Musterfarbe auf die Standardfarbe, die für die Hintergrundfarbe der Zelle verwendet wird, was in der Regel eine automatische Anpassung bedeutet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige