Form mit Farbe aus Zelle formatieren
#1
Hallo zusammen,

vermutlich ich komme ohne VBA Kenntnisse an der Stelle nicht weiter.

Ich würde gerne eine Form im Tabellenblatt mit der gleichen Farbe ausfüllen mit der Zelle A1 eingefärbt ist.

Hab schon vieles Probiert aus verschiedenen Foren,   aber ich scheine dafür zu blöd zu sein. Dodgy

Ich freue mich auf eure Antworten.
Top
#2
Hallo Ben,

füge in ein neues VBA-Modul (Einfügen - Modul) dieses Makro ein:
Sub FarbeWieA1()
 ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = Range("A1").Interior.Color
End Sub
Zurück auf dem Excelblatt weist Du der Form dieses Makro zu (Rechtsklick auf die Form - Makro zuweisen - Makro auswählen).
Nun reicht ein Mausklick auf diese Form, um die Farbe von A1 zu übernehmen.

Gruß Uwe
Top
#3
Hallo Uwe,

ist ja genial. Vielen Dank

Gibt es auch eine Möglichkeit das sich die Farbe der Form sich automatisch ändert wenn sich die Farbe der Ausgangszelle verändert?

Was ich gerade auch noch gemerkt habe, wenn ich die Ausgangszellen mit einer bedingten Formatierung versehe, übernimmt er die Farbe nicht. Gibt es da auch eine Möglichkeit?

Gruß Ben
Top
#4
Hallo Ben,

so ist es egal, ob feste Farbe oder bedingte Formatierung:
Sub FarbeWieA1()
 ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = Range("A1").DisplayFormat.Interior.Color
End Sub
Leider löst ein Farbwechsel kein Ereignis aus, das man dann nutzen könnte.

Gruß Uwe
Top
#5
Hallo Uwe,

das heißt wenn sich ein Wert in der Zelle ändern würde könnte man das nutzen um ein Makro ablaufen zu lassen dass dann alle Farben aktualisiert?

Wie würde das dann lauten? Sorry ich hab echt keinen Plan von VBA. Angel
Top
#6
Hallo Ben,

(10.02.2017, 22:21)Ben1234 schrieb: Hallo Uwe,

das heißt wenn sich ein Wert in der Zelle ändern würde könnte man das nutzen um eine Makro ablaufen zu lassen dass dann alle Farben aktualisiert?

Wie wurde das dann lauten? Sorry ich hab echt keinen Plan von VBA. Angel

ja, das könnte man. Dafür gibt es das Worksheet_Change-Ereignis.

Gruß Uwe
Top
#7
Hallo Uwe, 

Könntest du mir noch sagen wie und wo ich das eintragen muß?

Dann bin ich fertig. 

Gruß Ben
Top
#8
Hallo Ben,

Rechtsklick auf den Tabellenblattreiter - Code anzeigen
In das rechte Codefenster folgenden Code einfügen:
Private Sub Worksheet_Change(ByVal Target As Range)
 ActiveSheet.Shapes("Abgerundetes Rechteck 1").Fill.ForeColor.RGB = Range("A1").DisplayFormat.Interior.Color
End Sub
Gruß Uwe
Top
#9
Hallo Uwe,

noch eine kurze Frage. Wie mache ich es wenn ich das gleiche auch bei A2 usw. machen möchte.

Gruß Ben
Top
#10
Hallo Ben,

hier eine Variante mit der Select Case-Anweisung, die Du beliebig erweitern kannst:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim strShapename As String
 Select Case Target.Address(0, 0)
   Case "A1"
     strShapename = "abc"
   Case "A2"
     strShapename = "def"
   Case "A3"
     strShapename = "ghi"
 End Select
 If Len(strShapename) Then
   Me.Shapes(strShapename).Fill.ForeColor.RGB = Target.DisplayFormat.Interior.Color
 End If
End Sub
Gruß Uwe
Top


Gehe zu:


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