Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Farbe einer bestimmte Zelle ändern

Farbe einer bestimmte Zelle ändern
13.10.2017 10:20:22
Alexander
Moin, ich sitze schon eine Weile vor einem Problem. Leider kann ich VBA gar nicht.
Ich habe in Zelle Q8 bis Q38 Buchstaben stehen. Je nach Buchstabe soll sich die Farbe in G,H und I ändern.
Wenn in Q8 also ein "a" steht dann sollen sich G,H und I ändern.
Wenn Q8 = a dann
G die Farbe 45
H die Farbe 44
I die Farbe 45
Wenn Q8 = b dann
G die Farbe 39
H die Farbe 38
I die Farbe 37
Es gibt a,b,c,d,e,f,x,y,z
Das funktioniert in soweit das sich das Feld ändert in dem der Buchstabe steht.
Wie bekomme ich es hin das sich die anderen Zellen färben. Vielleicht ist da InStr auch der falsche Ansatz?
Sub farbe()
Dim rngCell As Range
For Each rngCell In Range("Q8:Q38")
If InStr(1, rngCell.Value, "a") > 0 Then
rngCell.Interior.ColorIndex = 45
End If
Next rngCell
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbe einer bestimmte Zelle ändern
13.10.2017 10:30:13
ChrisL
Hi Alexander
InStr könnte hilfreich sein, wenn du auf Teil-Strings (Zelle "enthält" a) prüfen willst. Aber darum scheint es hier ja nicht zu gehen.
Sub farbe()
Dim rngCell As Range
For Each rngCell In Range("Q8:Q38")
Select Case rngCell
Case "a"
rngCell.Offset(0, -10).Interior.ColorIndex = 45
rngCell.Offset(0, -9).Interior.ColorIndex = 44
rngCell.Offset(0, -8).Interior.ColorIndex = 45
Case "b"
rngCell.Offset(0, -10).Interior.ColorIndex = 39
rngCell.Offset(0, -9).Interior.ColorIndex = 38
rngCell.Offset(0, -8).Interior.ColorIndex = 37
End Select
Next rngCell
End Sub

cu
Chris
Anzeige
AW: Farbe einer bestimmte Zelle ändern
13.10.2017 10:36:36
ChrisL
Etwas weniger zum Schreiben...
Sub farbe()
Dim rngCell As Range
For Each rngCell In Range("Q8:Q38")
Select Case rngCell
Case "a": Call MachFarbig(rngCell, 45, 44, 45)
Case "b": Call MachFarbig(rngCell, 39, 38, 37)
End Select
Next rngCell
End Sub

Private Sub MachFarbig(rng As Range, f1 As Integer, f2 As Integer, f3 As Integer)
rng.Offset(0, -10).Interior.ColorIndex = f1
rng.Offset(0, -9).Interior.ColorIndex = f2
rng.Offset(0, -8).Interior.ColorIndex = f3
End Sub

cu
Chris
Anzeige
AW: Farbe einer bestimmte Zelle ändern
13.10.2017 10:41:07
Alexander
Super Danke das reicht mir schon so :)
Danke für die Rückmeldung owT
13.10.2017 10:41:56
ChrisL
.
AW: Farbe einer bestimmte Zelle ändern
13.10.2017 10:33:30
yummi
Hallo Alexander,
Instr kannst Du nehmen wen nnur ein a enthalten sein soll, wenn du aber nur anch a abfragen willst reicht =

Sub farbe()
Dim rngCell As Range
For Each rngCell In Range("Q8:Q38")
If rngCell.Value = "a" Then
rngCell.Interior.ColorIndex = 45
Cells(rngcell.row, 7).interior.ColorIndex = 45
Cells(rngcell.row, 8).interior.ColorIndex = 44
Cells(rngcell.row, 9).interior.ColorIndex = 45
End If
If rngCell.Value = "b" Then
rngCell.Interior.ColorIndex = 39
Cells(rngcell.row, 7).interior.ColorIndex = 39
Cells(rngcell.row, 8).interior.ColorIndex = 38
Cells(rngcell.row, 9).interior.ColorIndex = 37
End If
Next rngCell
WEnn du die Q Zelel nicht ändern willst, musst du die erste Zeile nach dem if jeweils auskommentieren.
Gruß
yummi
End Sub
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zelle einfärben mit Excel VBA


Schritt-für-Schritt-Anleitung

Um die Farbe einer bestimmten Zelle in Excel mit VBA zu ändern, kannst Du die folgende Schritt-für-Schritt-Anleitung nutzen. In diesem Beispiel passen wir die Farben in den Zellen G, H und I an, abhängig von den Buchstaben in den Zellen Q8 bis Q38.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden VBA-Code ein:
Sub farbe()
    Dim rngCell As Range
    For Each rngCell In Range("Q8:Q38")
        Select Case rngCell.Value
            Case "a"
                rngCell.Offset(0, -10).Interior.ColorIndex = 45 ' G
                rngCell.Offset(0, -9).Interior.ColorIndex = 44  ' H
                rngCell.Offset(0, -8).Interior.ColorIndex = 45  ' I
            Case "b"
                rngCell.Offset(0, -10).Interior.ColorIndex = 39 ' G
                rngCell.Offset(0, -9).Interior.ColorIndex = 38  ' H
                rngCell.Offset(0, -8).Interior.ColorIndex = 37  ' I
        End Select
    Next rngCell
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Drücke ALT + F8, wähle das Makro farbe aus und klicke auf Ausführen.

Jetzt sollten die Zellen in G, H und I sich entsprechend der Buchstaben in Q8 bis Q38 färben.


Häufige Fehler und Lösungen

  • Fehler: Zelle wird nicht gefärbt.

    • Lösung: Stelle sicher, dass die Zelle in Q8 bis Q38 tatsächlich einen der Buchstaben a oder b enthält. Überprüfe auch, ob die Farbindices korrekt sind.
  • Fehler: VBA-Code läuft nicht.

    • Lösung: Überprüfe, ob der Code im richtigen Modul eingefügt wurde und ob Du die richtigen Berechtigungen hast, um Makros auszuführen.

Alternative Methoden

Eine alternative Methode, um die Zellen zu färben, ist die Verwendung von bedingten Formatierungen in Excel. Du kannst die Farben basierend auf dem Zellinhalt automatisch ändern, ohne VBA zu verwenden. Gehe dazu wie folgt vor:

  1. Wähle die Zellen G, H und I aus.
  2. Klicke auf Start > Bedingte Formatierung > Neue Regel.
  3. Wähle Formel zur Ermittlung der zu formatierenden Zellen verwenden.
  4. Gib die Formel ein, z.B. =$Q8="a" und wähle die gewünschte Füllfarbe.
  5. Wiederhole diesen Schritt für die anderen Buchstaben.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die VBA-Funktion anpassen kannst, um weitere Buchstaben und Farbänderungen hinzuzufügen:

Sub farbe()
    Dim rngCell As Range
    For Each rngCell In Range("Q8:Q38")
        Select Case rngCell.Value
            Case "a"
                Call MachFarbig(rngCell, 45, 44, 45)
            Case "b"
                Call MachFarbig(rngCell, 39, 38, 37)
            Case "c"
                Call MachFarbig(rngCell, 34, 33, 32) ' Beispiel für Buchstabe c
        End Select
    Next rngCell
End Sub

Private Sub MachFarbig(rng As Range, f1 As Integer, f2 As Integer, f3 As Integer)
    rng.Offset(0, -10).Interior.ColorIndex = f1
    rng.Offset(0, -9).Interior.ColorIndex = f2
    rng.Offset(0, -8).Interior.ColorIndex = f3
End Sub

Tipps für Profis

  • Nutze RGB-Farben für genauere Farbzuweisungen. Beispiel:
rngCell.Offset(0, -10).Interior.Color = RGB(255, 0, 0) ' Rot
  • Verwende Fehlerbehandlung in deinem Code, um unerwartete Fehler abzufangen:
On Error Resume Next
  • Halte Deine Makros übersichtlich, indem Du Funktionen schreibst, die wiederverwendbar sind.

FAQ: Häufige Fragen

1. Kann ich mehrere Zellen gleichzeitig färben?
Ja, Du kannst mehrere Zellen gleichzeitig färben, indem Du entsprechende Bereiche im Code angibst.

2. Wie kann ich die Hintergrundfarbe einer Zelle ändern?
Die Hintergrundfarbe einer Zelle änderst Du, indem Du Interior.ColorIndex oder Interior.Color verwendest, wie im Beispiel gezeigt.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige