Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Aktualisierung bei Farbwechsel

Betrifft: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 12:05:27

Hallo Zusammen,

in einer Arbeitsmappe übertrage ich Zellfarben von einem Tabellenblatt in ein anderes Tabellenblatt über ZELLE.ZUORDNEN und indirekter Adressierung.

Nun benötige ich nur noch ein Makro mit folgender Funktion:

Wenn in Tabelle1 irgendo die Zellfarbe geändert wird, soll automatisch Tabelle3 aktualisiert werden.

Kann mir dabei jemand helfen?

Freundliche Grüße
Hans

  

Betrifft: AW: Aktualisierung bei Farbwechsel von: Hajo_Zi
Geschrieben am: 07.09.2014 12:12:08

Hallo Hans,

lade doch mal eine Datei hoch. Das hätte ich gern gesehen wie man mit ZELLE.ZUORDNEN Farben überträgt.

GrußformelHomepage


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 12:48:56

Hallo Hajo,

hier ist die Datei
https://www.herber.de/bbs/user/92507.xlsm

Die Farben aus Tabelle 1 werden über Hilfstabelle2 in Tabelle 3 übertragen.
Nur muss ständig bei einem Farbwechsel in Tabelle1 mittels F9 die Tabelle3 aktualisiert werden und das möchte ich gerne noch automatisieren.

Gruß
Hans


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: Hajo_Zi
Geschrieben am: 07.09.2014 12:57:16

Hallo Hans,

ich habe gerade A10;E10 und I10 geändert und F9 gedrückt, einzeln und zusammen aber in Tabelle3 gibt es keine Farbveränderung.
Was mache ich falsch?

GrußformelHomepage


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 13:00:23

Hallo Hajo,

Du hast die Farben für die Produktnummern "10", "j" und "jj" geändert.
Da diese Produktnummern in Tabelle3 nicht vorkommen, kann sich auch nichts ändern.

Gruß Hans


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: Hajo_Zi
Geschrieben am: 07.09.2014 13:03:14

Hallo Hans,

es Stand nicht das ich eine bestimmte Zelle ändern muss.
Jetzt A9, gleicher Effekt.
Jetzt A5, gleicher Effekt.
Vielleicht solltest Du mittteilen welche Zelle geändert werden muss?

Gruß Hajo


  

Betrifft: offen von: Hajo_Zi
Geschrieben am: 07.09.2014 13:08:06

Hallo Hans,

die Aussage das die Farbe über Zelle.zuordnen geändert wird ist falsch. Es passiert über bedingte Formatierung und da auch nur für bestimmte Farben.

Gruß Hajo


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 13:08:46

Hallo Hajo,

ändere bitte mal die Farbe in Tabelle1 Zelle E7 (=Produktnummer "g") in gelb.

Nach F9 ändert sich das Produkt "g" in Tabelle3. Dieses Produkt gibt es dort in Zelle F10.
Diese Zelle wird dann ebenfalls gelb.

Gruß
Hans


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: Daniel
Geschrieben am: 07.09.2014 13:20:01

Hi

Ich blick zwar auch nicht, wie deine Tabelle funktioniert, aber das Grundproblem ist, dass eine Änderung eines Formats Excel nicht dazu veranlasst, die Formeln oder Namen neu zu berechnen!
Dh. deine Änderungen werden immer erst dann berücksichtigt, wenn du F9 drückst oder in einer Zelle einen Wert ändert. da kannst du auch nichts dran ändern und damit muss man leben, wenn man Formeln oder Namen verwendet, die mit Formaten rechnen.
Auch mit Makros lässt sich da nicht viel automatisieren, weil es noch kein Event für eine Formatänderung gibt.
Am dichtesten dran wäre noch, im selectionchange-Event die neuberechnung auszuführen, dass wäre dann beim Klick in die nächste Zelle.

Gruß Daniel


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 13:36:02

Hallo Daniel,

danke für die Information. Beim selectionchange-Event würde das bei einer Mappe mit sehr vielen Formeln die Rechenleistung ziemlich beanspruchen und die gesamte Bearbeitung eventuell verlangsamen.

Dann wäre die Alternative, dass beim Öffnen der Datei ein Makro startet, das alle 5 Minuten "F9" drückt, aber möglichst ohne zu viel Rechenleistung zu benötigen, da dieses Makro ja dann ununterbrochen läuft.

Hast Du dafür vielleicht einen Code?

Freundliche Grüße
Hans


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 13:51:25

Danke,

hat sich erledigt. Woanders hat man nicht über meine vielleicht nicht richtige Ausdrucksweise diskutiert, sondern mir geholfen

Hans


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: Daniel
Geschrieben am: 07.09.2014 14:43:06

Schön.
Und wie sieht die Lösung aus?
Es wäre gut, wenn du sie hier zeigen würdest, falls mal jemand mit einer ähnlichen Frage erst im Archiv sucht.

Wenn die automatische Umfärbung auf einem anderen Blatt erfolgen soll, dann kannst du ja auch einfach dass Activate oder Deactivate-Event der entsprechenden Sheets verwenden.
SelectionChange wäre nur erforderlich, wenn auf dem selben Blatt.



Gruß Daniel


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 16:38:36

Hallo Daniel,

Du warst nicht gemeint mit meinem Kommentar. Nun zu Deiner Frage:

Das Auslösen dieses Makros bei Änderung funktioniert nicht:

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("A:A"))
If Target Is Nothing Then
Exit Sub
Else
Call Calculate
End If
End Sub
Die Aktualisierung wird nur dann ausgelöst, wenn ich einen Wert in der Spalte A ändere und die Zelle mit Return verlasse. Wenn ich die Zelle nur mit der Maus markiere und die Farbe ändere, funktioniert es nicht.

Daher sehe ich nur die Möglichkeit, zeitgesteuert eine Aktualisierung laufen zu lassen:

Private Sub Workbook_Open()
    Call intervall
End Sub
Sub intervall()
    Dim NextTime As Date
    NextTime = Now + TimeValue("00:05:00")
    Application.OnTime NextTime, "intervall"
    Call Calculate
End Sub

Damit kann ich insgesamt arbeiten, obwohl das noch nicht ideal ist.

Mit der Übertragung der Farben bin ich auch noch nicht ganz zufrieden, obwohl es einigermaßen läuft. Ich muss anhand des über ZELLE.ZUORDNEN(63,...) ausgelesenen Farbcodes für jeden einzelnen Code eine bedingte Formatierung schreiben, um eine andere Zelle mit einer bestimmten Hintergrundfarbe auszustatten.
Bisher habe ich noch keine Möglichkeit gefunden, aus dem ausgelesenen Farbcode mit einer einzigen bedingten Formatierung die gleiche Farbe wieder zu erzeugen.

Mit freundlichen Grüßen
Hans


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: stormlamp
Geschrieben am: 07.09.2014 18:15:19

Nachtrag:
Es gibt eine Möglichkeit, auf Farbwechsel zu reagieren, aber das funktioniert bisher nur, wenn ich nach dem Farbwechsel auf eine andere Zelle klicke, die ebenfalls eine Farbe hat:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:Z1000")) Is Nothing Then
If Target.Interior.ColorIndex <> xlNone Then
Call Calculate
End If
End If
End Sub
Gruß
stormlamp


  

Betrifft: AW: Aktualisierung bei Farbwechsel von: Daniel
Geschrieben am: 07.09.2014 19:52:02

Wenn du im Blatt 1 die Farben änderst und sich das im Blatt 3 per Formel gesteuert auswirken soll, dann kannst du dich einfach die Neuberechnung beim Blattwechsel ausführen lassen, dh im Deactivate-Event von Blatt 1 oder im Activate- Event von Blatt 3.
Wenn mehrere Blätter betroffen sind, dann gibt's diese Events auch im Modul "DieseArbeitsmappe", welche dann bei jedem Wechsel das aktiven Blatts ausgeführt werden, egal um welches Blatt es sich handelt.

Gruß Daniel


  

Betrifft: Diese Art von Farbwechsel-Übertragung ... von: Luc:-?
Geschrieben am: 08.09.2014 02:01:16

…halte ich für unnötig aufwendig und damit mehrfach problembelastet, Hans,
denn du hast so gleich 2 Probleme. Das 1. wurde bereits benannt und erklärt, aber das kann man auch durch Erzeugung einer künstlichen Volatilität teilweise lösen. Das 2. besteht in der Verwendung der Farbindizes anstelle der tatsächlichen RGB-Farbcodes, was ggf nur in den alten XlVersionen zufriedenstellend fktioniert. Aber das ließe sich ja auch ändern.
Für 1. müsste man die benannte Fml zwar nur mit 1^JETZT() multiplizieren, dann würde auch ein Klick auf eine beliebige Zelle ausreichen, aber da nur 3 Farben benutzt wdn sollen, müssen dann auch alle gleichfarbigen Zellen geändert wdn, was doch wohl recht unpraktisch ist. Hier sollte sich eine BedingtFormatierung in allen Blättern auf eine Legende beziehen, in der die Farben leicht auszutauschen wären, was dann pro Farbe nur eines Klicks bedürfte, um alle gleichgefärbten Zellen farblich zu ändern, wenn dem ein entsprechendes EreignisPgm unterlegt wird.
Mir kommt das jedenfalls ziemlich unhandlich vor, auch, wenn keine Farben geändert, sondern nur ungefärbte Zellen nachträglich in einer der 3 Farben gefärbt wdn sollen. Der Sinn des Ganzen erschließt sich mir aus dem Bsp nicht, was einen ggf optimaleren Lösungsvorschlag ausschließt. Deshalb kann mein Einwurf auch nicht als ein solcher betrachtet wdn.
Gruß, Luc :-?


  

Betrifft: keep it simple :-) von: stormlamp
Geschrieben am: 08.09.2014 12:41:54

Hallo Luc,

danke für Deinen Lösungsvorschlag. Ich muss nur darauf hinweisen, dass meine VBA-Kenntnisse sehr bescheiden sind.

Hintergrund der Anwendung:

In der Tabelle1 arbeitet die Abteilung Disposition. Für jede andere Abteilung gibt es ein weiteres Tabellenblatt in dem die jeweils nur für diese Abteilung erforderlichen Tätigkeiten aufgelistet sind. Die gesamten Tätigkeiten der verschiedenen Abteilungen werden über SVERWWEIS mit der Dispositiontabelle gekoppelt.

Nun macht es sich die Disposition recht einfach und färbt manuell einfach die einzelnen Auftragszeilen ein
rot = Liefertermin überschritten, gelb=Liefertermin kritisch, grün=Liefertermin ungefährdet.
Diese Farb-Information soll in die anderen Tabellen übertragen werden, aber in der ersten ziemlich großen Tabelle darf nichts geändert werden.

Also fand ich nur den Weg, die Farbinformationen der ersten Tabelle in eine Hilfstabelle zu übertragen, die gegen Löschungen und verschieben in der Haupttabelle immun ist.

Die Produktnummer holen ich mir über die Formel:

A1=INDIREKT("Tabelle1!A"&ZEILE())

Die zugehörige Farbe hole ich mir über eine eigene Funktion
Zeilenfarbe=ZELLE.ZUORDNEN(63;INDIREKT("Tabelle1!A"&ZEILE()))
Je nachdem was dort steht, färbe ich dann mittels bedingter Formatierung die Zielzellen in den anderen Tabellenblättern mit den 3 benötigten Farben ein. Diese Art der Farbübertragung ist vielleicht umständlich und holprig, aber das entspricht noch so eben meinen Excel-Kentnissen und funktioniert in excel 2010 und 2013.

Natürlich hätte ich lieber in der Hilfstabelle die RGB-Farben ausgelesen und diese Farben dann direkt in die Zielzellen geschrieben.

Aber da komme ich zu sehr in den VBA-Bereich, von dem ich nichts mehr verstehe und auch die Erklärungen nicht, die ich so beim googeln gefunden habe.
Und dann müsste ich in diese VBA-Codes mit "Interior.ColorIndex" auch noch meine indirekten Adressierungen einbauen und dann kommt der Block des Zurückschreibens der Farben..... Das ist zuviel des Guten :-)

Trotzdem danke für Deine Anmerkungen
Hans


  

Betrifft: Aha, na dann... ;-) Viel Erfolg! Gruß owT von: Luc:-?
Geschrieben am: 08.09.2014 19:00:27

:-?


  

Betrifft: AW: Aha, na dann... ;-) Viel Erfolg! Gruß owT von: Ewald
Geschrieben am: 10.09.2014 01:33:40

Hallo,

auch wenn ein Farbwechsel kein Ereignis hat,was man benutzen kann, so ist es trotzdem kein Problem diese Änderung nachzuvollziehen.

zum Testen

in ein Modul

Public addr As String
Public alterWert As Long
in das Tabellenmodul
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim olda
If addr <> "" Then
    olda = addr
   If Range(olda).Interior.Color <> alterWert Then
   MsgBox " Im Bereich " & olda & " wurde die Farbe geändert von " & alterWert & " auf " &  _
Range(olda).Interior.Color
End If
End If
addr = Target.Address(0, 0)
alterWert = Range(addr).Interior.Color
End Sub
jetzt die Farbe in Tabelle3 zu ändern, sollte kein Problem sein

Gruß Ewald


 

Beiträge aus den Excel-Beispielen zum Thema "Aktualisierung bei Farbwechsel"