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

Forumthread: Problem mit Interior.Colorindex

Problem mit Interior.Colorindex
15.08.2020 13:01:49
Peter
Hallo, ich bitte um Hilfe bei folgendem Problem:
Ich versuche via VBA die Schriftfarbe und die Hintergrundfarbe zu ändern. Sofern ich nur die Schriftfarbe setze funktioniert alles. Sobald ich versuche die Hintergrundfarbe zu setzen funktioniert es nicht mehr. Nur die erste Zelle des angegebenen Ranges erhält rote Schriftfarbe.
Mein System ist OSX.
Vielen Dank und viele Grüße Peter

Function SDue(SRange As Range)
Dim myCell As Range
SDue = 0
For Each myCell In SRange
' set Font red
myCell.Font.ColorIndex = 3
' set Background yellow
myCell.Interior.ColorIndex = 6
Next myCell
End Function
Bsp.:
Zuweisung von A1: =SDue(B3:D3)
Inhalt von A1: #WERT
Farbe von B3: Rot
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Interior.Colorindex
15.08.2020 13:21:07
EtoPHG
Hallo,
"Funktioniert nicht mehr" ist informationslos. Fehlermeldung? Fehlerverhalten?
Eine Funktion UDF kann den Inhalt genau einer Zelle.
Sie kann nicht Inhalte von anderen Zellen ändern, d.h. sie ist beschränkt auf die Zelle in der sie steht!
Gruess Hansueli
P.S. OSX tönt nach Apfel, und in derem Umfeld kenn ich mich kaum aus.
Anzeige
AW: Problem mit Interior.Colorindex
15.08.2020 13:34:13
Sigi
Hallo Peter,
was du willst, geht nur mit einer Sub():
Sub Färben()
Dim myCell As Range
Dim SRange As Range
Set SRange = Range("C2:E7")
For Each myCell In SRange
' set Font red
myCell.Font.ColorIndex = 3
' set Background yellow
myCell.Interior.ColorIndex = 6
Next myCell
Set SRange = Nothing
End Sub
Sigi
Anzeige
AW: Problem mit Interior.Colorindex
15.08.2020 16:22:07
onur
"Sofern ich nur die Schriftfarbe setze funktioniert alles. Sobald ich versuche die Hintergrundfarbe zu setzen funktioniert es nicht mehr" -das ist Blödsinn, da die Funktion NIEMALS funktioniert haben kann, da, wie Hansueli bereits erwähnt hat, eine Funktion NUR die Zelle verändern kann/darf, in der sie sich befindet.
Anzeige
AW: Problem mit Interior.Colorindex
15.08.2020 19:37:36
volti
Hallo onur,
da muss ich Dich korrigieren. So eine Funktion darf natürlich auch andere Zellen verändern.
Dieses hier setzt z.B. die Farbe in dem Feld rechts neben dem Feld, in dem die Funktion steht.
Code:
Application.ThisCell.Offset(0, 1).Font.ColorIndex = 3

Und Die Foreschleife von Peter funktioniert auch tadellos.
Nur die Hintergrundfarbe will er auch bei mir nicht setzen, sondern beendet die Funktion ohne Fehlermeldung. Grund, weiß ich nicht.
viele Grüße
Karl-Heinz
Anzeige
AW: Problem mit Interior.Colorindex
15.08.2020 20:02:00
onur
Hi Karl-Heinz,
offensichtlich sieht Excel Farbänderung der Schrift NICHT als Änderung (evtl weil weder die Zelle noch der Inhalt wirklich verändert wird) an.
Interior.Color jedoch verändert die Zelle selber.
Gruß
Onur
AW: Problem mit Interior.Colorindex
15.08.2020 20:05:23
volti
Daran wird's liegen.
Werte in anderen Zellen verändert er ja auch nicht. Entspricht ja auch nicht der Logik so einer Funktion. :-)
VG KH
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Probleme mit der Verwendung von Interior.ColorIndex in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Hintergrundfarbe von Zellen in Excel VBA zu ändern, kannst Du die Interior.ColorIndex-Eigenschaft verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

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

  3. Füge den folgenden Code ein:

    Sub Färben()
       Dim myCell As Range
       Dim SRange As Range
       Set SRange = Range("C2:E7") ' Definiere den Zellbereich
       For Each myCell In SRange
           ' Setze die Schriftfarbe auf Rot
           myCell.Font.ColorIndex = 3
           ' Setze die Hintergrundfarbe auf Gelb
           myCell.Interior.ColorIndex = 6
       Next myCell
       Set SRange = Nothing
    End Sub
  4. Führe das Makro aus: Du kannst das Makro entweder über den VBA-Editor oder zurück in Excel über „Entwicklertools“ > „Makros“ ausführen.


Häufige Fehler und Lösungen

  • Keine Änderung der Hintergrundfarbe: Stelle sicher, dass Du Interior.ColorIndex korrekt verwendest. Wenn Du nur die Schriftfarbe änderst, aber die Hintergrundfarbe nicht, kann es an der Verwendung einer Funktion (UDF) liegen. Funktionen können nur die Zelle ändern, in der sie stehen.

  • Fehler bei der Zuweisung: Wenn Du Interior.ColorIndex auf -4142 setzt, bedeutet das „keine Farbe“. Vergewissere Dich, dass Du den gewünschten Farbindex verwendest.


Alternative Methoden

Wenn Du Probleme mit Interior.ColorIndex hast, kannst Du auch die Interior.Color-Eigenschaft verwenden, um RGB-Farben zu setzen:

myCell.Interior.Color = RGB(255, 255, 0) ' Gelb

Diese Methode ist flexibler, da Du jede Farbe durch ihre RGB-Werte definieren kannst.


Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von Interior.ColorIndex in verschiedenen Szenarien:

  1. Ändern der Hintergrundfarbe auf Rot:

    myCell.Interior.ColorIndex = 3 ' Rot
  2. Zurücksetzen der Hintergrundfarbe auf keine Farbe:

    myCell.Interior.ColorIndex = xlNone ' Keine Farbe
  3. Ändern der Hintergrundfarbe basierend auf einem Wert:

    If myCell.Value > 10 Then
       myCell.Interior.ColorIndex = 4 ' Grün
    Else
       myCell.Interior.ColorIndex = 3 ' Rot
    End If

Tipps für Profis

  • Nutze die DisplayFormat.Interior.ColorIndex, um die Formatierung von Zellen zu überprüfen. Manchmal kann das Format von Zellen durch andere Einstellungen beeinflusst werden.

  • Wenn Du in einer Tabelle arbeitest, stelle sicher, dass Du die Excel ColorIndex-Werte kennst, um die gewünschten Farben schnell einzustellen.

  • Denke daran, dass VBA und Excel unterschiedliche Farbsysteme haben können, also teste Deine Makros, um sicherzustellen, dass sie wie erwartet funktionieren.


FAQ: Häufige Fragen

1. Warum funktioniert mein Code nicht wie erwartet?
Das kann daran liegen, dass Du eine Funktion (UDF) verwendest, die nicht auf andere Zellen zugreifen kann. Verwende stattdessen ein Sub.

2. Wie setze ich eine Zelle auf „keine Farbe“?
Setze den ColorIndex auf -4142, um die Hintergrundfarbe der Zelle zu entfernen.

3. Kann ich RGB-Farben in VBA verwenden?
Ja, Du kannst myCell.Interior.Color = RGB(255, 255, 0) verwenden, um eine spezifische Farbe festzulegen.

4. Welche Excel-Version benötige ich?
Die Beispiele sind in VBA für Excel 2010 und höher anwendbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige