Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eigene Funktion für Zellfarbe

Eigene Funktion für Zellfarbe
26.04.2020 16:34:29
Marcel
Guten Tag
Ich arbeite gerade an einem Excel File, welches die Hintergrundfarbe von anderen Zellen automatisch übernehmen soll. Das bedeutet ich habe eine Spalte A mit folgenden Zellfarben:
- A1 hat die Zellfarbe grün
- A2 hat die Zellfarbe blau
- A3 hat die Zellfarbe rot
- A4 hat die Zellfarbe gelb
- usw.
Nun möchte ich in Spalte B über eine Formel folgende Anweisung setzten:
- Spalte B1 soll Zellfarbe von A4 erhalten
- Spalte B2 soll Zellfarbe von A3 erhalten
- Spalte B1 soll Zellfarbe von A2 erhalten
- Spalte B2 soll Zellfarbe von A1 erhalten
Um dies erreichen dachte ich mit eine Benutzerdefinierte Funktion (z.B. COPYFARBE) zu schreiben damit ich in der Spalte B folgende Formel verwenden könnte:
- Spalte B1 =COPYFARBE(A4)
- Spalte B2 =COPYFARBE(A3)
- Spalte B1 =COPYFARBE(A2)
- Spalte B2 =COPYFARBE(A1)
Ich habe nun aber Probleme die Benutzerdefinitere Funktion zu schreiben da ich wenig VBA Kenntnisse habe. Kann mir daher jemand helfen wie die Function COPYCOLOR() programmiert werden muss? Oder gibt es noch eine bessere, einfacher Lösung?
Besten Dank, Marcel

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eigene Funktion für Zellfarbe
26.04.2020 16:55:09
RPP63
Moin!
Das geht schlicht und ergreifend nicht, weil eine UDF im Tabellenblatt nur einen Wert übergeben kann.
Du könntest zwar z.B. den ColorIndex auslesen:
Function Farbindex&(rng As Range)
Farbindex = rng.Cells(1).Interior.ColorIndex
End Function

… bräuchtest dann aber für jeden CI eine separate bedingte Formatierung.
Gruß Ralf
AW: Eigene Funktion für Zellfarbe
26.04.2020 17:55:26
Marcel
Wäre es denkbar anhand dem ColorIndex Wert irgendwie (z.B. über eine Bedingte Formatierung) die Farbe in der Spalte B zu setzen? Bin Dankbar über jede Hilfe damit ich mein Excel etwas automatisieren kann ...
Anzeige
AW: Eigene Funktion für Zellfarbe
26.04.2020 18:28:23
Daniel
Hi
wird schwierig.
du hast folgende Probleme:
1. Formeln in Zellen dürfen nur einen Wert ausgeben, aber sonst keine Änderungen im Tabellenblatt durchführen. Man kann diese Restriktion zwar austricksen und umgehen, ist aber nicht so ganz einfach
2. Farb- und Formatänderungen lösen in Excel keine Neuberechnung der Zellen aus dh auch wenn du so eine Formel hinbekommst, wird sie icht immer aktuell sein.
vielleicht kannst du dich ja damit anfreunden:
- verwende folgende Funktion, um die zu färbenden Zellen zu kennzeichnen und die Bezugszelle anzugeben:
Function CopyFarbe(Zelle As Range, Optional Anzeige = "")
CopyFarbe = Anzeige
End Function
- als Formel dann in die Zelle B1: =CopyFarbe(A4)
wenn in der Zelle noch was angezeigt werden soll, kannst du dies als zweiten Parameter angeben: =CopyFarbe(A4;"hallo Welt")
- damit die Zellen mit dieser Formel ihre Farbe bekommen, muss dieses Makro ausgeführt werden:
Sub Färben()
Dim Zelle As Range
For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
If Zelle.Formula Like "*CopyFarbe*" Then
Zelle.Interior.Color = Zelle.DirectPrecedents(1).DisplayFormat.Interior.Color
End If
Next
End Sub
damit das automatisch geht, müssteest du diesen Code über ds SelectionChange-event ausfühen lassen.
gruß daniel
Anzeige
AW: Eigene Funktion für Zellfarbe
26.04.2020 20:06:11
Marcel
Besten Dank Daniel. Dein Lösungsansatz hat sehr weitergeholfen.
AW: Eigene Funktion für Zellfarbe
26.04.2020 20:28:41
Marcel
Hallo Daniel
Noch eine Frage. Wie muss ich den folgenden Code der Funktion (Färben( umschreiben, wenn die Spalte A im Tabellenblatt "Tabelle 1" und Spalte B im Tabellenblatt "Tabelle 2" liegt?
Sub Färben()
Dim Zelle As Range
For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
If Zelle.Formula Like "*CopyFarbe*" Then
Zelle.Interior.Color = Zelle.DirectPrecedents(1).DisplayFormat.Interior.Color
End If
Next
End Sub

Gruss Marcel
AW: Eigene Funktion für Zellfarbe
26.04.2020 22:40:58
Daniel
Dann muss man sich was ganz anderes ausdenken, weil das DirectPrecedents nur für Zellen auf dem gleichen Blatt funktioniert.
Dann muss man eventuell doch den anderen Weg gehen.
Warum gibts solche Informationen nicht gleich?
Gute Nacht
Anzeige
AW: Eigene Funktion für Zellfarbe
26.04.2020 23:20:27
Daniel
ok
habs jetzt ans laufen gebracht.
verwende folgende Codes:

Function CopyFarbe(Zelle As Range, Optional Anzeige = "")
Dim txt As String
With Application
.Volatile
Evaluate "Umfaerben('" _
& .Caller.Worksheet.Name & "'!" & .Caller.Address & ",'" _
& Zelle.Worksheet.Name & "'!" & Zelle.Address & ")"
End With
CopyFarbe = Anzeige
End Function

Function Umfaerben(Z1, Z2) As String
Z1.Interior.Color = Z2.DisplayFormat.Interior.Color
End Function
formel in der Zelle bleibt unverändert.
bezug auf anderes Blatt funktioniert.
Aktualisierung erfolgt durch Änderung eines beliebigen Zellwertes.
gruß Daniel
Anzeige
AW: Eigene Funktion für Zellfarbe
27.04.2020 10:16:23
Marcel
Super Recht herzlichen Dank.
Gruss Marcel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige