Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bedingte Formatierung in VBA?

Bedingte Formatierung in VBA?
Josef_T
Guten Morgen zusammen,
habe 10 unterschiedliche Maschinennummern, in A5:A500. Weil die Maschinennummern aber mehrmals in dem angegebenen Bereich vorkommen, möchte ich diese farblich unterlegen.
z.B.
Alle mit der M.-Nr. "5462"=rot, oder alle "978"=blau, usw.
Mit der Bedingten Formatierung, kann ich ja leider nur drei einstellen.
Kann mir bitte jemand von Euch Profis, mit einen Tip oder einer Lösung helfen?
Danke
Gruß
Josef

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bedingte Formatierung in VBA?
22.10.2011 08:28:44
Beverly
Hi Josef,
mit folgendem Makro kannst du die Zellen färben:

Sub Faerben()
Dim lngZelle As Long
For lngZelle = 1 To 500
Select Case Cells(lngZelle, 1)
Case 5462
Cells(lngZelle, 1).Interior.ColorIndex = 3
Case 978
Cells(lngZelle, 1).Interior.ColorIndex = 4
'  hier weitere Case Anweisungen
End Select
Next lngZelle
End Sub

Da du nur 2 Nummern mit den zugehörigen Farben angegeben hast, musst du den Code entsprechend erweitern.


AW: Bedingte Formatierung in VBA?
22.10.2011 09:42:13
Josef_T
Guten Morgen Karin,
Dein Makro funktioniert natürlich einwandfrei.
Danke für Deine Hilfe!
Karin, ich wünsche Dir noch ein schönes Wochenende
Josef
Anzeige
AW: Bedingte Formatierung in VBA?
22.10.2011 19:01:37
Josef_T
Hallo Hajo,
zuerst mal Danke für den Link zu Deiner Hompage. Habe mir mal die vielfältigen Möglichkeiten der Bedingten Formatierung angeschaut und sofort ein Makro für unsere LoBu gefunden und eingebaut.
Zu meinem Problem, hat mir die Karin mit einm gut funktionierendes Makro geholfen.
Hajo, mal ne Frage zu dem Makro von Karin: ist es möglich, daß Makro so anzupassen, dass bei der Eingabe der Maschinen-Nr. in Spalte A1:A500, die Zelle sofort farblich unterlegt wird?
Wenn Ja, sagst Du mir denn bitte wie?
Danke
Gruß
Josef
Anzeige
AW: Bedingte Formatierung in VBA?
22.10.2011 19:04:28
Hajo_Zi
Hallo Josef,
da mußt Du Karin Fragen. Mein Vorschlag der auf die Eingabe in einem Bereich reagiert hat Dir ja wohl nicht gefallen.
Gruß Hajo
AW: Bedingte Formatierung in VBA?
22.10.2011 19:22:12
Beverly
Hi Josef,
verwende diesen Code im Codemodul des Tabellenblattes

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
For Each Target In Target
Select Case Target
Case 5462
Target.Interior.ColorIndex = 3
Case 978
Target.Interior.ColorIndex = 4
'  hier weitere Case Anweisungen
End Select
Next Target
End If
End Sub



Anzeige
AW: Bedingte Formatierung in VBA?
22.10.2011 20:29:24
Josef_T
Hallo Karin,
Funktioniert jetzt alles pefekt.
Vielen Dank für Deine zusätzliche Arbeit mit meinen Wünschen.
Gruß
Josef
Die vorgestellten Lösungen sind nur Ersatz...
22.10.2011 23:47:00
Luc:-?
…konstrukte für, keine echte BedingtFormatierung, Josef,
die man übrigens auch vor xl12 dazu bringen kann, mit mehr als 3 Bedingungen fertig zu wdn.
Gruß+schöSo, Luc :-?
AW: Die vorgestellten Lösungen sind nur Ersatz...
23.10.2011 08:14:03
Josef_T
Hallo Luc.
Danke das Du mal reingeschaut hast. Du schreibst, dass man auch vor xl12 mit mehr als 3 Bedingungen fertig werden kann.
Luc, kannst Du mal ein Beispiel zeigen, wie das gemacht wird?
Danke schonmal
Gruß
Josef
da bin ich aber gespannt, wie du...
23.10.2011 08:41:40
Beverly
...10 unterschiedliche Farben realisieren willst.
@Josef,
die bedingte Formatierung vor Excel2007 bietet auch noch andere Formatierungsmöglichkeiten: Schriftfarbe, Schriftschnitt, Schrifteffekt sowie unterschiedliche Rahmenarten und Rahmenfarben - aber eben nur 3 Bedingungen für Hintergrunfarben. Dazu kommt noch keine Hintergrundfarbe, was nach Adam Ries 4 unterschiedliche Hintergrundfarben macht.


Anzeige
AW: Die vorgestellten Lösungen sind nur Ersatz...
23.10.2011 14:00:46
Josef_T
Hallo Hajo,
solche Kombinationen von eckigen Klammen, habe ich überhaupt noch nie gesehen! In der Anwendung natürlich Perfekt.
Ich glaube, dass bei vielen Hilfesuchenden diese Benutzerdefinierte Klammerformeln, manches unlösbare Problem beseitigt.
Danke Dir und ein schönes Wochenende.
Josef
P.S. Jetzt glaube ich mittlerweile schon, dass Ihr Profis einem Zitronenfalter (Formelmäßig) noch beibringt, Zitronen zu falten.
Anzeige
Das hättest du auch im Archiv finden können,...
24.10.2011 02:50:50
Luc:-?
…Josef,
denn darüber habe ich wohl schon vor 2-3 Jahren mal was geschrieben; und außerdem sind's so sogar 8 Schriftfarben aus der []-Einstellung von 3 Zahlenfarben + 1 Textfarbe + 1 Zelltext-Grundformat (bspw für Fehlerwerte) + 3 BedingtFormate für ganz bestimmte Texte.
Was mehr als 3 BedingtFormate vor Xl12 betrifft, habe ich darüber schon seit 2010 abundzu hier mal was geschrieben (inkl Bspp, Stichwort: dynamisiertes BedingtFormat). Das fktt nahezu für beliebig viele Unterbedingungen, denn das ist der Schlüssel! Leider bin ich darauf erst 2010 gekommen und nicht schon vor 5 Jahren!
Grundgedanke: Warum kann man nicht auch die Farbe, die bei erfüllter Bedingung angezeigt wdn soll, separat per VBA bedingungsabhängig beeinflussen?
Also, wie kann man das evtl doch hinbekommen? Indem man einfach bei der Tabellengestaltung das tut, was man ohnehin tun sollte, wenn man viele farbl Markierungen unterschiedl Bedeutung in einer Tabelle verwendet → eine Legende anlegen! Da führt man dann alle Zellfarben besonderer Bedeutung nebst Erläuterung auf. Zusätzlich gibt man dazu Bedingungen in xlFml-Schreibweise an. Das kann natürl auch nur im VBA-Teil erfolgen, muss sich aber auf die farbtragenden Legendenzellen beziehen. Diese Bedingungen und mit ihnen die zugehörigen Legendenzellen sollte man so zusammenfassen, dass zu ihnen eine Hauptbedingung gebildet wdn kann, die dann in der BedingtFormatierung erscheint. Da bleibt natürlich das Limit von 3 Bedingungen bestehen, denn das kann man wirklich nicht umgehen. Aber man kann per VBA diese Bedingungen ansprechen und dabei je nachdem, welche der der Legende zugeordneten Unterbedingungen erfüllt ist, die der entsprechenden HptBedingung zugeordnete Farbe anhand der Legende wechseln (per geeigneter Ereignisprozedur wie bei den Ersatzkonstrukten). Dadurch erhält man vor Xl12 ggf lauter einzelne BedingtFormate (maximal jede Zelle anders!).
Unter Xl12ff würde das nicht mehr klappen, da hier die Änderung auf den ganzen ursprüngl zugeordneten Zellbereich übertragen wird. Gemeinerweise kann man das auch nicht durch Einzelzell-Formatierung umgehen, da Xl dann die Bereiche gleicher Formatierung automatisch zusammenfasst. Aber es gibt eine Möglichkeit, damit solche Tabellen sowohl unter Xl9-11 als auch ab Xl12 gleichermaßen fktn: Man muss bedingte Kompilierung einsetzen, um eine erst ab Xl12 verfügbare FormatCondition-Objekt-Eigenschaft, mit deren Hilfe der Gültigkeitsbereich auf die jeweilige Zelle beschränkt wdn kann, ins Pgm schreiben zu können (sonst gäbe es nämlich vor Xl12 Fehlermeldungen und nichts würde mehr laufen). Allerdings muss man die feste Konstante für die BedingtKompilierung von xlVersion zu xlVersion manuell ändern; man sollte also gleich 2 Versionen bereit halten!
Übrigens, der Vorteil ggüber den Ersatzkonstrukten, obwohl etwas komplizierter, liegt auf der Hand — man muss sich nicht um die Rückstellung der Farbveränderung bei nicht-mehr-erfüllter Bedingung kümmern, das macht dann xl ganz automatisch. ;-)
Gruß Luc :-?
PS: ZZ arbeite ich an einem Projekt, in dem so 10 verschiedene Signierungen farblich per dynBedingtFormat unterschieden wdn…
Anzeige
das erklärt aber immer noch nicht...
24.10.2011 07:44:22
Beverly
...wie du in den Excelversionen vor 2007 mehr als 3 (bzw. 4) Hintergrundfarben erstellst.


Ich schrieb doch, ich tausche sie per VBA ...
24.10.2011 09:42:17
Luc:-?
…in .FormatConditions(x).Interior.Color der betroffenen Zelle aus, Beverly,
dabei dient die TabLegende als Vorlage, ggf in max 3 Gruppen (x) angeordnet, damit dort die Farben, falls sich das jemand anders überlegt, genauso einfach bzw sogar noch einfacher als direkt in der BedingtFormatierung geändert wdn können. Ggf kann man darauf aber auch verzichten. Falls auch noch Anderes dynamisch bedingt formatiert wdn soll, ist es allerdings besser, wenn dieses in der ggf vorhandenen Legende auch in normalen BedingtFormaten erledigt wird, damit die ZellFormatierung auch wirklich ins dynBedFmt der zu formatierenden Zellen übernommen wdn kann.
Bei 10 verschiedenen Sinierungen von 0…9 benötigt man allerdings nur eine HptBedingung, falls nicht noch Anderes als nur die Zellfarbe geändert wdn soll. Wenn jetzt also bspw eine 3 in eine dynamisch bedingt zu formatierende Zelle eingetragen wird und dafür die (Hpt)Bedingung 2 vorgesehen ist, die dann (Zellwert ist) .Formula1:>=0, .Formula2: lauten könnte, und der irgendeine (Start-)Zellfarbe zugeordnet ist, damit man erst mal ganze Bereiche so formatieren kann, wird die Zellfarbe dann bei Auslösung des _Change-Ereignisses nicht direkt wie in den Standard-Ersatzlösungen, sondern in der BedingtFormatierung geändert, also hier: Target.FormatConditions(2).Interior.Color = Range("Legendenbereich").Cells(Target + 1).Interior.Color
Dabei ist Legendenbereich hier ein Vektor aus 10 Zellen mit Werten von 0-9. Das ist natürlich der einfachste Fall, aber auch am besten für die Erklärung des Prinzips geeignet. Kompliziertere Fälle setzen etwas mehr Denkarbeit voraus, sind aber idR auch möglich.
Daraus ersieht man sicher, dass es auch 20, 30, 40 und mehr solcher Signierungen sein könnten, nur begrenzt durch die Anzahl der Indexfarben der Palette.
Guten Morgen, Luc :-?
Anzeige
was nützt dem Benutzer das Ganze...
24.10.2011 11:31:51
Beverly
...wenn es darum geht, 10 unterschiedliche Farben gleichzeitig darzustellen...
Aber egal - für mich ist an dieser Stelle einmal mehr eine sinnlose Diskussion mit dir beendet, da es dir ja sowieso nur darum geht, die Lösungen anderer zu diskreditieren, ohne eine konkrete eigene einzustellen, die genau das Problem des Fragestellers löst.


Typisch, hätte eigentl gedacht, dass du ...
24.10.2011 16:56:10
Luc:-?
…das verstehen könntest — aber bei dem verbohrten „Feindbild” ist das ohnehin wie „Perlen vor die Säue” geworfen! Die Farben wdn natürl gleichzeitig dargestellt, bei mir ist das ja auch so! Verschiedene Maschinengruppen sind doch wie verschiedene Signierungen! Und hier geht's auch nicht um Diskreditierung, sondern um „Augen Öffnen”! Immerhin sind das ja auch nicht eure Lösungen, sondern basieren auf dem gleichen Prinzip wie FConPlus, oder wie das damals hieß, schon vergessen. Und dieses Prinzip liegt im Grunde auch hierbei zugrunde — nur konsequent zuende gedacht!
Dieser Beitrag von dir war mal wieder recht enttäuschend, aber eigentl hatte ich's auch nicht anders erwartet. Nicht ich, sondern du versuchst die Arbeit Anderer entweder zu ignorieren oder gar zu diskreditieren — nur aus Unverstand! Mahlzeit!
Viel Spaß in Chemnitz! Luc :-?
Anzeige
...getroffene Hunde bellen o.T.
24.10.2011 17:39:34
Beverly
...
Ich geb's auf, unbelehrbar! Dann schmor mal ...
24.10.2011 18:32:49
Luc:-?
…schön weiter im eigenen Saft und schreibt weiter fleißig voneinander ab — wissenschaftl Objektivität ist das nicht gerade!
Übrigens CFPlus war gemeint!
Luc :-?
du bleibst immer noch den Beweis schuldig...
25.10.2011 13:05:06
Beverly
...für deine Behauptung, dass man mit der bedingten Formatierung vor Excel2007 mehr als 3 Füllfarben gleichzeitig darstellen kann. Alles andere ist eine VBA-Lösung und hat mit der bedingten Formatierung an sich nichts zu tun. Das ist Realität und wissenschaftliche Objektivität.


Ich habe von Anfang an gesagt, MIT VBA, ...
25.10.2011 16:10:43
Anfang
…von ohne VBA war nie die Rede, Beverly!
Meine Lösung basiert auf der Nutzung des gleichen Ereignisses wie der von euch verwendete CFPlus-Standard, nur nutzt sie die Mechanismen der BedingtFormatierung und färbt die Zelle nicht direkt, was auch sofort zu erkennen ist, wenn die aktuelle Zellfarbe auf üblichem Weg ausgelesen wdn soll. Insofern kann ich auch behaupten, dass es sich hierbei um echte BedingtFormatierung handelt, denn es wird ja diese Farbgebungsebene benutzt, während es sich beim CFPlus-Standard nur um ein Ersatzkonstrukt handelt, das die Zellfärbung zwar auch von Bedingungen abhängig macht, aber diese Ebene nicht nutzt und deshalb auch keine Priorität ggüber der BedingtFormatierung hat. Mit einem ebenfalls auf den so behandelten Zellen angebrachten BedingtFormat wird diese Färbung ggf ausgehebelt. Außerdem besteht das Rückfärbungsproblem.
Deine Reaktion darauf erklärt mir auch die Ursache dafür, warum ich nicht eher auf diese Lösung gekommen bin, obwohl ich den Ausgangsgedanken schon früher hatte und es im Grunde genommen ganz einfach ist. Einmal eingeführte und 100x kopierte Denkweisen und Gewohnheiten sind meist nur schwer zu überwinden.
Gruß Luc :-?
Anzeige
da irrst du dich...
25.10.2011 16:41:00
Beverly
hier Zitat deines 1. Beitrages:

…konstrukte für, keine echte BedingtFormatierung, Josef,
die man übrigens auch vor xl12 dazu bringen kann, mit mehr als 3 Bedingungen fertig zu wdn.

Darin steht nichts von "ohne VBA" - du solltest schon deine eigenen Beiträge selbst richtig lesen. Aber egal, für mich ist das Thema endgültig erledigt.


Was meinst du wohl, "dazu bringen" bedeutet, ...
25.10.2011 18:45:59
Luc:-?
…Madam,
außerdem ist das nicht mein 1.Beitrag zu diesem Thema! Seit 2010 kannst du mindestens ein halbes Dtzd Threads dazu im Archiv finden (inkl Lösungsdarstellung), die du wohl alle ignoriert hast. Ich ging eigentl davon aus, dass jemand, der über soviel VBA-Erfahrung wie du verfügt, meine Beschreibung nachvollziehen kann. Aber du bist offensichtl nicht an einer sachlichen Diskussion interessiert, sondern mehr an Streit und Wort­klauberei. Das ist typisch für einen bestimmten Menschenschlag, der nicht zugeben kann und will, dass da jemand eine bessere Lösung gefunden hat als man selbst. Solche dogmatischen Denker haben der wissenschaftl-technischen Entwicklg zu allen Zeiten eher geschadet als genutzt! Aber meinetwg kannst du gerne weiter glauben bzw machen, was du willst. Terry Pratchett lässt schön grüßen… :->
Luc :-?
Deine Ansprachen hier ...
25.10.2011 20:06:43
KlausF
... sind einfach unerträglich, lieber Lüg:-?
Ist meine persönliche Meinung und bedarf keines weiteren Kommentars –
auch wenn Dir das sicherlich schwer fallen wird ...
Klaus
Eine solche Tatsachenignoranz ist mir ...
25.10.2011 23:17:13
Luc:-?
…keine ausführl AW wert. Nur soviel, die Verunstaltung meines Nicknames verbitte ich mir, sie zeugt letztlich nur von deiner geistigen Unreife. :-<<
Luc :-?
...zumal du ja nach eigenem Bekunden Einer ...
25.10.2011 23:49:53
Luc:-?
…mit „wenig Ahnung von VBA” bist — da verstehst du bei diesem Thread im Ggsatz zu Beverly (zumindest sollte es so sein) ohnehin nur Bahnhof! Außerdem kennst du wohl kaum die Vorgeschichte!
:-?
AW: ...zumal du ja nach eigenem Bekunden Einer ...
26.10.2011 22:01:33
KlausF
Man muß nicht viel von VBA verstehen, Luc, um feststellen zu können, dass Deine Ansprachen hier im Forum unterirdisch sind:
Madam / Das ist typisch für einen bestimmten Menschenschlag, der nicht zugeben kann und will, dass da jemand
eine bessere Lösung gefunden hat als man selbst / aber bei dem verbohrten „Feindbild” ist das ohnehin wie
„Perlen vor die Säue” geworfen! / Nicht ich, sondern du versuchst die Arbeit Anderer entweder zu ignorieren oder
gar zu diskreditieren — nur aus Unverstand! Mahlzeit! /
... um nur einige Deiner beleidigenden Sätze zu zitieren. Ich würde mir wünschen, dass Du in der Zukunft Deine
Tonart ein wenig mehr kontrollierst. Ich glaube, dass wäre auch in Hans' Interesse.
Und: Deine erste (sachlich falsche) Antwort kommt über 2 Stunden nachdem der Frager bereits eine Lösung
bekommen und sich dankend verabschiedet hat. Danach folgen von Dir Ausführungen, die jemand mit
Kaum Excel/VBA-Kenntnisse (wie der Frager) sowieso nicht nachvollziehen kann. So what? Das hilft doch dem
Frager nicht mehr ...
Für mich ist das damit erledigt.
Klaus
Ganz schön weit aus dem Fenster gelehnt ...
28.10.2011 08:40:51
Luc:-?
…für jemand, der weder genug Ahnung von VBA hat, um den Sachverhalt objektiv beurteilen zu können, noch den sich mittlerweile über Jahre hinziehenden Hintergrund kennt, geschweige denn die Kontrahenten. Glaub' mir, du wärest überrascht, wenn du das alles wissen würdest.
…Und HWH — der kennt seine Pappenheimer und was ihn wirklich interessiert, kannst du im Kopf, unterste Zeile, 3x rechts lesen.
:-?
AW: Zu
28.10.2011 10:16:09
klappen
.

341 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige