Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zellhintergrundfarbe durch Zelleninhalt ändern
#1
Hallo,

ich suche eine Möglichkeit den Zellenhintergrund aufgrund eines X in der gleichen Zelle zu ändern. Die Farbnummer soll aber über eine anderen Zelle ausgelesen werden. In der Zelle B5 steht 3 für die Farbe Rot. Nun möchte ich, dass wenn in einer anderen Zelle ein X eingetragen wird von dieser Zelle die Hintergrundfarbe aus der Zelle B5 übernommen wird.

Gruß Daniel
Antworten Top
#2
Hallo Daniel,

meinst Du so?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If UCase(Target.Value) = "X" Then Target.Interior.ColorIndex = Cells(Target.Row, 2).Value
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Daniel Albert
Antworten Top
#3
Hallo Stefan,

ja so ähnlich. Ich brauche das pro Spalte siehe Tabelle.

Beispiel: Spalte D4:D27 soll bei einem X die Farbe aus Zelle AM31 annehmen. Bei F4:F27 Farbe der Zelle AM32. Ist das möglich ?


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 39,34 KB / Downloads: 8)
Antworten Top
#4
Hallo Daniel,

mal ungetestet da die UDF Schrift nicht in der Datei enthalten ist.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rngFarbe As Range
  
   If Not Intersect(Target, Range("D4:E27")) Is Nothing Then
      Select Case Target.Column
         Case 4
            Set rngFarbe = Range("AM31")
         Case 6
            Set rngFarbe = Range("AM32")
         Case Else
            Exit Sub
      End Select
      If UCase(Target.Cells(1).Value) = "X" Then Target.Interior.ColorIndex = rngFarbe.Value
   End If
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Daniel Albert
Antworten Top
#5
Hallo Stefan,

bei rngFarbe steht Fehler 2029

Wenn ich direkt einen Farbcode eintrage z.B. 4 geht es. bei rngFarbe.Value kommt Fehler 2029

      If UCase(Target.Cells(1).Value) = "X" Then Target.Interior.ColorIndex = rngFarbe.Value

er übernimmt in die Variable rngfarbe nicht die Zahl.

was ich verstehe ist der Case. Im grunde ist ja für jede Spalte hier im Beispiel D4 bis D27 der Farbwert in Zelle AM31 festgelegt und für F4 bis F27 in Zelle AM32.

Liegt es daran ?
Antworten Top
#6
Hallo Daniel,

öffne ich die von dir hochgeladene Datei, steht in den Zellen AM31 und AM32 jeweils #NAME?. Gehe ich auf die Zellen, lese ich in der Bearbeitungsleiste =Schrift. Darum habe ich vermutet, das Du eine benutzerdefinierte Funktion verwendest. Wenn die in der Datei nicht vorhanden ist, kommt es zu dieser Fehlermeldung.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Daniel Albert
Antworten Top
#7
Hallo,

ja stimmt der Definierte Name war gelöscht. Jetzt geht es wieder, siehe Anhang

Leider geht die Spalte B nicht und C ist die falsche Farbe.


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 41,14 KB / Downloads: 2)
Antworten Top
#8
Hallo Daniel,

(24.01.2016, 16:09)Daniel Albert schrieb: Leider geht die Spalte B nicht und C ist die falsche Farbe.

:20:

Du sprichst in den ersten Beiträgen hier in diesem Thread von Spalte D und E. Jetzt von Spalte B und C. Du hast im Code nur eine Stelle geändert. Du mußt schon an mehreren Stellen ändern. Spalte A ist 1, Spalte B ist 2....

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rngFarbe As Range
  
   If Not Intersect(Target, Range("B4:D27")) Is Nothing Then
      Select Case Target.Column
         Case 2
            Set rngFarbe = Range("AM31")
         Case 4
            Set rngFarbe = Range("AM32")
         Case Else
            Exit Sub
      End Select
      If UCase(Target.Cells(1).Value) = "X" Then Target.Interior.ColorIndex = rngFarbe.Value
   End If
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Daniel Albert
Antworten Top
#9
Hallo Stefan,

ja du hast recht, die mappe 1 ist ein Arbeitsplan, sprich es wiederholen sich die Spalten für 6 nutzer. spalte B,F,F,H,J, und L für Montag sind die Spalten mit der Farbanzeige für die Arbeitszeiten. Die Spalten C,E,G,I,K,M sind Hilfsspalten zum zählen der Farbzellen für die Stundenübersicht. Das gleiche wiederholt sich Dienstag, Mittwoch, Donnerstag und Freitag.

Dein Marko funktioniert für Spalten B und D.
Antworten Top
#10
Stefan,

DANKE, habe das Makro erweitert und es funktioniert. Habe das Makro noch erweitert, dass wenn das X entfernt wird wieder die Farbe gelöscht wird oder besser überschrieben wird mit 0

Nochmal Danke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste