Microsoft Excel

Herbers Excel/VBA-Archiv

Hintergrundfarbe einer Zelle automatisch übertrage

Betrifft: Hintergrundfarbe einer Zelle automatisch übertrage von: Martin
Geschrieben am: 16.11.2014 23:35:33

Folgendes Excel-2003 Problem.

Ich entwerfe ein Spielformular für bis zu 10 Spielern.
Auf Blatt 1 stehen die Zahlen 1 bis 10 (im Bereich A15:A24) , jede Zahl entspricht einem Spieler und damit einer eigenen Farbe (Spieler/Farbe: 1= Meeresgrün, 2= Türkis, 3= Hellgelb, 4= Lavendel, 5= Hellblau, 6= Gelbgrün, 7= Hellorange, 8= Braun,9= Grau -25%, 10= Blaugrau).

Auf Blatt 2 werden die Spielpaarungen aufgeführt (1-3; 2-7 usw.).
Jede Zahl soll mit der entsprechende Farbe des Spielers gemäß der Vorgabe von Blatt 1 hinterlegt werden, Spieler 1 mit Meeresgrün usw.
Das Problem ist, dass je nach Gruppengröße die Spielreihenfolge eine andere sein kann. So kann im Bereich B2:B4 anstelle von 1(B2) -(B3) 3(B4) auch 4-5 stehen.
Wie kann ich es hinbekommen, dass die Farben sich automatisch anpassen?
Danke im voraus für eure Hilfe

  

Betrifft: Das wäre ab Xl12(2007) kein Problem für ... von: Luc:-?
Geschrieben am: 17.11.2014 04:07:55

…die BedingtFormatierung, Martin;
bis Xl11(2003) im manuellen Bereich schon, aber es geht mit Hilfe von VBA, indem die ursprünglich für alle Spieler gleich eingestellte Farbe der höchstwahrscheinlich einzigen dafür benötigten (Haupt-)Bedingung (Verweis auf Spieler und Positiv-Vgl des Spielers mit der Spielerliste) je nach Spieler geändert wird. Da du eine Spielerliste (Legende) mit deren Farben hast, kannst du 10 einfache Unterbedingungen für eine VBA-EreignisProzedur formulieren, bei deren Erfüllung die jeweils angegebene SpielerFarbe in das ZellFormat der BedingtFormatierung übernommen wird. Dafür könnte evtl das Worksheet_Change-Ereignis des jeweiligen Blattes (im Dokument­Klassen­Modul des betreffenden Blattes) dienen und eine FarbÜbernahme bei Eintrag könnte ungefähr so aussehen (Prozedur­Kopf steht fest und darf nicht geändert wdn, deshalb nicht kopieren, sondern per DropDown anlegen → Versions­Unterschiede!):

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim SpielerNr As Integer, SpielerZelle As Range
    '… Target ist die geänderte Zelle, dazu erst die SpielerNr ermitteln!
    Set SpielerZelle = Worksheets("Blatt1").Range("B2:Bn").Find(…)
    'zu .Find in VBE-Hilfe nachlesen!
    If Not SpielerZelle Is Nothing Then
        Target.FormatConditions(1).Interior.Color = SpielerZelle.Interior.Color
    End If
    '…
    Set SpielerZelle = Nothing
End Sub
Diese Methode nenne ich dynamized Conditional Formatting. Unter diesem o.ä. Namen findest du auch Bsp im Archiv.
Achtung! Bei Umstellung auf Xl12ff fktioniert das nicht mehr so. Es müsste dann einiges ergänzt oder neu aufgebaut wdn.
Morrn, Luc :-?


  

Betrifft: AW: Das wäre ab Xl12(2007) kein Problem für ... von: Martin
Geschrieben am: 17.11.2014 18:10:02

Vielen Dank für die Unterstützung. Ich werde beide Vorschläge testen.
Weitere Vorschläge sind immer willkommen :)
Danke im voraus


  

Betrifft: bedingte Ersatz von: Hajo_Zi
Geschrieben am: 17.11.2014 09:42:23

Hallo Martin,

es sind ja Eingaben.
http://hajo-excel.de/chCounter3/getfile.php?id=86

GrußformelHomepage


 

Beiträge aus den Excel-Beispielen zum Thema "Hintergrundfarbe einer Zelle automatisch übertrage"