Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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
VBA-Programmierung bedingte Formatierung
Martin
Hallo zusammen,
einem Bekannten habe ich ein Excel-Sheet erstellt. Obwohl er genau wie ich Office 2010 hat funktioniert die bedingte Formatierung nicht so richtig.
Auf der Suche nach dem Grund ist mir im Netz jedoch eine andere Lösung eingefallen. Hierzu brauche ich jedoch einen VBA-Crack.
In Tabellenblatt 'Parameter'! habe ich in Spalte J:J eine Liste von Farben, die entsprechend formatiert sind. In Zelle J3 steht z.B. "Rot", die Zelle ist auch rot gefüllt (J4="Gelb" + gelbe Füllung, J5="Grün" + grüne Füllung,...).
In Zelle 'Einweisung'!Z2 steht einer dieser Werte. Dieser bezieht sich auf eine Formel mit Bezug auf 'Einweisung'!C2.
'Einweisung'!C2 soll nun so formatiert werden, wie die Zelle mit dem selben Wert in Tabelle 'Parameter'!. Zum Beispiel steht in Zelle 'Einweisung'!Z2="Rot". Daher soll die Zelle 'Einweisung'!C2 wie 'Parameter'!J3 rot gefüllt werden. Das Ganze soll sich auf den Bereich 'Einweisung'!C2:T150 bzw. 'Einweisung'!Z2:AQ150.
Das klingt ziemlich kompliziert. Vielleicht kann die Beispieldatei für etwas Entwirrung sorgen:
https://www.herber.de/bbs/user/81030.xlsx
Im Netz habe ich gesehen, dass so etwas mit VBA möglich ist. Allerdings habe ich keine Ahnung von VBA. Könnt Ihr mir weiterhelfen?
Vielen Dank für Eure Antworten
Grüße
Martin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 08:30:06
Armin
Hallo Martin,
den folgenden Code in das Tabellenblatt (Codebereich) kopieren. Aber (!) das Sheet als xlsm speichern!
Ansonsten wird der Code nicht mit gespeichert.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FCode As String
Dim RFarbe As Range
Dim Farbe As Range
If IsDate(Target.Value) Then
FCode = Target.Offset(0, 14).Value
Set RFarbe = Worksheets("Parameter").Range("J2:J10")
Set Farbe = RFarbe.Find(FCode, LookIn:=xlValues)
If Not Farbe Is Nothing Then
Target.Interior.Color = Farbe.Interior.Color
Else
With Target.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
End If
Else
With Target.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Set RFarbe = Nothing
Set Farbe = Nothing
End If
End Sub

LG Armin
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 08:47:13
Martin
Hallo Armin,
danke für Deine schnelle Hilfe.
Allerdings klappt es (noch) nicht. Ich denke, ich habe etwas falsch gemacht. Folgend bin ich vorgegangen:
Ich habe einen Rechtsklick auf Tabellenblatt 'Einweisung'! gemacht, dann habe ich den Menüpunkt "Code anzeigen..." ausgewählt. Im folgenden VBA-Fenster habe ich Deinen Code 1:1 kopiert. Anschließend habe ich die Datei unter xlsm gespeichert.
Die Formatierung wird allerdings nicht angepasst, auch nach einem Neustart nicht. Unter dem Menüpunkt "Makros" finde ich den Code nicht, wenn ich allerdings wie oben beschrieben einen Rechtsklick auf das Tabellenblatt durchführe und dann den Menüpunkt "Code anzeigen" auswähle sehe ich den Code.
Wenn ich das Userform ausführen will wird mir das (leere) Makro-Fenster geöffnet.
Erkläre doch bitte einem VBA-Laien, was er falsch gemacht hat.
Danke und Grüße
Martin
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 09:06:48
Armin
Hallo Martin,
gehe bitte Reiter "Entwicklertools" erster Block "Makrosicherheit" Alle Makros aktivieren und Haken setzen bei Zugriff auf das VBA-Projektmodell vertrauen.
LG Armin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 09:44:44
Martin
Hallo Armin,
den Reiter "Entwicklertools" gibt es bei mir nicht.
Statt dessen habe ich unter Optionen - Sicherheitscenter - Einstellungen für das Sicherheitscenter... den Menüpunkt "Alle Makros aktivieren (...)" angeklickt und dazu die Option "Zugriff auf das VBA-Projektobjektmodell vertrauen" angewählt.
Selbst nach erneutem Öffnen von Excel ist keine Formatierung erkennbar.
Für mich sieht es so aus, als würde ich diese Einstellung für Excel generell ändern, wenn ich die Makro-Optionen wie beschrieben anpasse. Grundsätzlich finde ich es jedoch nicht gut, generell alle Makros zu aktivieren. Abgesehen davon, dass das Vorgehen nicht geklappt hat: Gibt es einen Weg, das Makro auf Anfrage zu aktivieren? Bei "normalen" (ausführbaren) Makros kann man bei Start doch auch entscheiden, ob für eine bestimmte Datei Makros aktiviert werden sollen.
Hast Du noch eine Idee, was ich einstellen muss?
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 10:24:22
Martin
Hi Armin.
Dein Makro funktioniert!
Wenn ich das allerdings in mein Sheet übertrage funktioniert es nicht. Nach wie vor ist der Unterschied zwischen Deiner und meiner Datei, dass bei Dir die Info der nicht ausgeführten Makros erscheint. Bei mir gibt es keinen Hinweis darauf, dass ein Makro existiert.
Ich werde versuchen, Deine Datei mit meinen zusätzlichen Berechnungen auszustatten, um diese verwenden zu können.
Vielleicht kannst Du mir aber auch sagen, ob ich etwas falsch gemacht habe. Die Durchführung habe ich wie am Anfang beschrieben gemacht...
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 10:50:18
Martin
Kommando zurück....
Dein Makro scheint doch bei mir zu funktionieren. Zumindest fast immer...
Sobald ich in eine Zelle des Bereichs C:T ein Datum eintrage funktioniert alles wie gewünscht. In die Spalte C kommt allerdings ein Textwert (u.a "Ja", "Nein", "Eingez."). Ebenfalls funktioniert die Formatierung nicht bei leeren Zellen. Die Farbbezeichnung im Bereich Z:AQ ändert sich jedoch entsprechend der Eingaben.
Kannst Du Dir vorstellen, was hier noch im Argen liegt?
Danke und Grüße
PS. Bis jetzt sieht es schon mal genial aus!!! Danke
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 10:55:14
Armin
Hallo Martin,
kopiere bitte das Makro aus dem zweiten Sheet was ich Dir geschickt habe, dann müsste es gehen.
Gruß Armin
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 11:03:37
Armin
Hallo Martin,
ich habe noch eine Anpassung vorgenommen. Da die schwarzen Fonts schlecht lesbar sind habe ich durch ein Kennzeichen in der Spalte Farbe "Parameter" ein "x" gesetzt damit die Schrift "weis" werden soll wenn man es möchte (z.Bsp. bei allen dunklen Farben).
Du musst den Code einfach nur in Deine Anwerndung kopieren und die "x" setzen wo die Schrift weis sein soll. Sie Beispiel:
https://www.herber.de/bbs/user/81038.xlsm
Gruß Armin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 11:18:51
Martin
Hi Armin,
sieht soweit alles gut aus. Allerdings sehe ich auch in dem von Dir eben hochgeladenem Sheet, dass ein Eintrag in Spalte C "folgenlos" bleibt. Ebenfalls sind die leeren Felder (=braun) nicht entsprechend formatiert...
Auf meinem Rechner wird die Farbe nur dann korrekt angezeigt, wenn ich ein Datum eintrage, sowohl bei meiner Datei als auch bei der Datei, die Du mir zuletzt zur Verfügung gestellt hast (81038.xlsm). Zuerst dachte ich an das installierte Zertifikat. Dagegen spricht jedoch, dass die Schriftfarbeinstellungen in beiden Dateien funktioniert.
Die Berechnung scheint (zumindest lokal bei mir) noch ein Problem mit Textwerten oder BLANKs zu haben.
Kannst Du da noch mal schauen?
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 11:24:27
Armin
Hallo Martin,
leider ein immer währendes Problem -Außenstehende habe es schwer, dass gedachte nachzuvollziehen.
Ich dachte es wird immer ein Datum eingegeben und habe auf Datum geprüft.
Nächster Versuch:
https://www.herber.de/bbs/user/81042.xlsm
Gruß Armin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 11:47:07
Armin
Hallo Martin,
sorry, jetzt ist mir noch etwas aufgefallen. Man muss die Range einschränken. Also nur in dem Bereich C:T sollte das Makro ablaufen.
https://www.herber.de/bbs/user/81043.xlsm
Viel Erfolg
LG Armin
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 11:56:58
Martin
Hi Armin,
Jetzt funktioniert es bei allen eingegebenen Werten.
Eine Frage: Kann das Makro auch bei leeren Feldern funktionieren? Du siehst, dass z.B. in Zeile 2 keine Werte eingetragen sind. Hier sollte die Feldfarbe wenn möglich trotzdem gemäß des Wertes im Bereich Z:AQ sein.
Ist es möglich, das einzubauen?
Danke und Grüße
Martin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 12:48:32
Armin
Hallo Martin,
das verstehe ich leider nicht. Wenn kein Wert eingeben wird wird das Makro nicht aufgerufen.
Wann sollte denn das passieren. Bitte noch einmal für mich zum nachvollziehen.
Übrigens solltest Du jetzt das aus Nachricht mit 81043.xlsm verwenden.
Gruß Armin
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 13:02:17
Martin
Das Makro aus 81043.xlsm funktioniert auch soweit.
Z.B. Zelle E2 ist BLANK. Im "Format-Feld" hierzu (=AB2) steht daher "Braun". In meiner eigenen Datei kommt dieser Wert durch eine Formel raus, in der Beispieldatei steht hardgecoded "Braun". Im besten Fall ist daher die Zelle E2 mit einer braunen Hintergrundfarbe.
Ist das möglich?
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 13:04:37
Martin
Frage noch offen...
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 13:12:00
Armin
Hallo Martin,
Irgend wie steh ich auf dem Schlauch. Dann brauchst Du doch das jetztige Makro eigentlich garnicht. Denn dann sind ja alle Felder in der entsprechenden Farbe. Die Aufgabenstellung war dann ja eine ganz andere.
Oder?
Gruß Armin
Anzeige
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 13:40:07
Martin
Hi Armin,
da ich von VBA keine Ahnung habe kann ich Dir nicht sagen, ob das Makro nicht das Richtige ist.
Bis auf die leeren Felder funktioniert das Makro ja...
Ich werde meinen Wunsch noch einmal anders formulieren:
Wenn in Zelle Z2 "Braun" steht, soll Zelle C2 so formatiert werden wie die Zelle mit dem Wert "Braun" in 'Parameter'!J:J.
Wenn in Zelle Z2 "Rot" steht, soll Zelle C2 so formatiert werden wie die Zelle mit dem Wert "Rot" in 'Parameter'!J:J.
...
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 13:59:51
Armin
Hallo Martin,
also das hat zunächst nichts mit VBA zu tun. Es muss erst mal eine Aufgabenstellung definiert werden.
Ich kenne Deinen Ablauf nicht, deshalb ist das alles nur Stückwerk. Und leider auch Zeit. Ich war davon ausgegangen, dass die Eingaben im Bereich Spalte A2:Tn per Hand erfolgen und das dann die entsprechende Farbe des Feldes bestimmte visuelle Hinweise geben soll.
Aber jetzt sieht es so aus das ich das völlig falsch verstanden habe. Die Zellen sollen immer eine Farbe haben die Du im Spiegel-Bereich Z:AQ erzeugt hast. Wenn die Zellen immer eine bestimmte Farbe haben sollen muss das gleich bei Deiner Formel erfolgen und dann ist der Spiegelbereich überflüssig.
Gruß Armin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 14:16:17
Martin
Hallo Armin,
ich habe meine Datei einmal ohne Hardcodierung hochgeladen. Vielleicht wird meine vorstehende Anforderung dadurch eindeutiger:

Die Datei https://www.herber.de/bbs/user/81047.xlsm wurde aus Datenschutzgründen gelöscht


AW: VBA-Programmierung bedingte Formatierung
17.07.2012 14:38:34
Armin
Hallo Martin,
soll das "färben" nur für den Bereich Spalte C zutreffen oder für alle Spalten C:T ?
Du hast viele Zeilen nach unten Formatiert, wenn man das duchlaufen lässt wird das wahrscheinlich zu lang dauern. Oder ist eine Spalte die die max. Zeile repräsentiert?
Gruß Armin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 14:51:29
Martin
Der Bereich soll $C$2:$Y$150 sein.
Im Moment ist die Datei gefüllt im Bereich $C$2:$T$61, allerdings hätte ich gern noch Luft nach oben.
Ich hoffe, die Datei wird dann nciht allzu groß...
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 15:38:58
Armin
Hallo Martin,
ich habe nun hoffentlich das getroffen, was Du brauchst. Um das Makro zu steuren habe ich es an das Activate Sheet geknüpft. D.h. wenn Du die Tabelle aufruftst wird die Farbe aktualisiert. Falls Du es manuell oder anderweitig steuern möchtest musst Du Dich halt noch einmal melden.
https://www.herber.de/bbs/user/81050.xlsm
Gruß Armin
AW: VBA-Programmierung bedingte Formatierung
17.07.2012 10:19:13
Martin
Hi Armin,
auch das von Dir hochgeladene Sheet wird nicht korrekt angezeigt. Der Unterschied: Bei Öffnen Deiner Datei kommt die Meldung, dass Makros deaktiviert wurden (ich habe die Einstellungen wieder zurückgesetzt auf die MS-Standardeinstellungen "Makros mit Meldung deaktivieren).
Wenn ich die Einstellungen wieder auf "Makros aktivieren" ändere kommt die Meldung nicht, jedoch werden die Farben trotzdem nicht angezeigt.
Neben der generellen Frage, warum es nicht funktioniert stelle ich mir die Frage, warum bei Deiner Datei ein verhindertes Makro angezeigt wird und bei meiner nicht.
Excel gewährt mir die Option, ein unsicheres Zertifikat zu installieren. Nachdem dies geschehen ist ergibt sich allerdings keine Änderung:
Userbild

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige