Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
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
Inhaltsverzeichnis

Bedingte Formatierung mit VBA

Bedingte Formatierung mit VBA
19.07.2019 08:38:19
erichm
Hallo,
ich verwende aktuell die Bedingte Formatierung per Formel. Da sich die betroffene Zellenanzahl ständig erhöht, steigt die Dateigröße stark an.
Um dem entgegenzuwirken versuche ich die Bedingte Formatierung per VBA zu lösen. Mit der Aufzeichnung des Makrorecorders ist dies mir auch grundsätzlich bereits gelungen. Wie ich dieses Makro aber für eine Vielzahl von Zellen ausweiten kann ist mir jetzt unklar.
Beschreibung:
Spalte ALQ3 bis ALQ1001: Zahlen von 9 bis 23 in unsortierter Reihenfolge
Spalte ANA3 bis ANA17: Zahlen pro Zeile ab 9 bis 23 aufsteigend
Spalte ANB3 bsi ANB17: unterschiedliche Zahlen pro Zeile
Spalte ALM3 bis ALM1001: Ergebniszahlen die alle auch in der Spalte ANB3 bis ANB17 vorkommen
Für die Spalte ALM muss die bedingte Formatierung per SVERWEIS erstellt werden. Dabei werden jeweils vier unterschiedliche Farbtöne erstellt; hier beispielhaft für Zelle ALM3:
Farbton1: "=ALM3=SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)"
Farbton2: "=ALM3=(SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)+1)"
Farbton3: "=ALM3=(SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)+2)"
Farbton4: "=ALM3>(SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)+2)"
Diese Formatierung ist nach unten also ALM4, ALM5 usw., derzeit bis Zeile100
und nach links, also ALL3, ALL4, ALL5 usw., derzeit bis Spalte ALA und Zeile 100
zu übertragen.
Mein Aufzeichnungsmakro für die Zelle ALM3 mit manueller Erweiterung für die Zellen ALM4 und ALM5 sieht so aus:
Sub bedform1()
' bedform1 Makro
''Zeile3
Range("ALM3").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM3=SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM3").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM3=(SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)+1)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.5
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM3").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM3=(SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)+2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.9
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM3").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM3>(SVERWEIS($ALQ3;$ANA$3:$ANB$17;2;0)+2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = -0.1
End With
Selection.FormatConditions(1).StopIfTrue = False
'' Zeile4
Range("ALM4").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM4=SVERWEIS($ALQ4;$ANA$3:$ANB$17;2;0)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM4").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM4=(SVERWEIS($ALQ4;$ANA$3:$ANB$17;2;0)+1)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.5
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM4").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM4=(SVERWEIS($ALQ4;$ANA$3:$ANB$17;2;0)+2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.9
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM4").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM4>(SVERWEIS($ALQ4;$ANA$3:$ANB$17;2;0)+2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = -0.1
End With
Selection.FormatConditions(1).StopIfTrue = False
'' Zeile5
Range("ALM5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM5=SVERWEIS($ALQ5;$ANA$3:$ANB$17;2;0)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM5=(SVERWEIS($ALQ5;$ANA$3:$ANB$17;2;0)+1)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.5
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM5=(SVERWEIS($ALQ5;$ANA$3:$ANB$17;2;0)+2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.9
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("ALM5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ALM5>(SVERWEIS($ALQ5;$ANA$3:$ANB$17;2;0)+2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = -0.1
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

Wie muss der Code angepasst werden, dass er für die oben beschriebenen Bereiche (also von ALA3 bis ALM100) die bedingte Formatierung anzeigt?
Vielen Dank für eine Hilfe.
mfg

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mE bedarf dazu kein VBA ...
19.07.2019 09:18:11
neopa
Hallo Erich,
... wenn Du Deine entsprechende Tabelle zunächst in eine "intelligente" Tabelle formatierst und dieser abgestimmt auf deren Bereich Deine bedingte Formatierung zuweist, passt sich diese der "wachsenden" Tabelle an. Teste mal.
Gruß Werner
.. , - ...
AW: mE bedarf dazu kein VBA ...
19.07.2019 11:05:28
Luschi
Hallo Hallo & Werner,
es ist eigentlich traurig, das immer noch altgediente Excel-Anwender die 'intelligenten Tabellen' in der Praxis einfach nicht einsetzen, obwohl es die bereits seit Excel 2003 gibt (damal wurden sie noch Listen genannt, hatten aber schon viele der Vorteile der heutigen iT's, wie
- Wertebereich anpassen
- Formeln automatisch auffüllen und anpassen
Einziger Nachteil von damals, in Vba waren die Properties noch nicht so zahlreich.
Gruß von Luschi
aus klein-Paris
Anzeige
OT: ...Und noch davor konnte man mit Spalten- ...
20.07.2019 03:16:33
Luc:-?
…u/o ZeilenTiteln (sog Benennungen) arbeiten, Luschi,
was ich gelegentlich tat, wenn's passte, ich aber in Firmen-Xl-Tabellen niemals sah. Stattdessen wurden die Fmln visuell auf ver­sehent­liche FehlBezüge geprüft, mitunter Zelle für Zelle…
SchöWE! Morhn, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Deshalb Intelligenz steigern mit …

Anzeige
AW: mE bedarf dazu kein VBA ...
20.07.2019 13:08:35
erichm
Hallo Werner,
vielen Dank für den tollen Hinweis - feine Sache! Intelligente Tabellen hatte ich bisher (leider) nicht im Einsatz?
Ich habe mich mal eingelesen und experimentiert. In der Anlage eine Musterdatei die auch funktioniert. Kannst Du bitte mal kurz drüberschauen, ob man die Eingaben für die Bedingte Formatierung noch anpassen / verbessern kann? Ich hatte mir gedacht, das geht evtl. auch mit den Tabellennamen und/oder Spalten, aber da konnte ich keine Lösung finden.
https://www.herber.de/bbs/user/131004.xlsx
Wenns soweit passt ist es auch gut :)
DANKE!
mfg
Anzeige
AW: Auswert. "intellig. Tab." in bed. Format. ...
20.07.2019 17:06:46
neopa
Hallo Erich,
... ist natürlich auch möglich, jedoch nur über eine im Namensmanager zugewiesene benannte Formel. Dies zu tun, macht auch Sinn, weil damit die Datenstruktur innerhalb der Tabellenblätter unabhängig von Formeländerungen gestaltet werden kann, vorausgesetzt natürlich, diese werden korrekt definiert.
Ein weiterer Vorteil dessen ist auch, dass Du die (hier im Beispiel: drei) von einander abhängigen Tabellen beliebig innerhalb des Tabellenblattes verschieben kannst, ohne Änderungen an den Formeln und Bezügen vornehmen zu müssen. Dies hab ich Dir in beigefügter Datei bereits aufgezeigt. Kannst es natürlich dort auch nachvollziehen & testen.
Nun noch der Hinweis darauf, dass die Auswertung in Deinem Beispiel dadurch noch etwas beschleunigt werden kann, indem ich hier das 4. Argument der SVERWEIS()-Formel inklusive dessen vorangestellten Semikolons wegfallen lassen habe. Dies ist hier möglich, weil Deine MAX-Werte der Dat_MAX Tabelle aufwärts sortiert sind.
https://www.herber.de/bbs/user/131007.xlsx
Gruß Werner
.. , - ...
Anzeige
Danke für den Service Werner - mfg o.w.T.
21.07.2019 20:35:56
erichm
...
AW: bitteschön ... und noch nachgefragt ...
22.07.2019 09:21:05
neopa
Hallo Erich,
... Du hattest in einen Deiner letzten Anfragen geschrieben, dass sich euer Projekt auf der "Zielgeraden" befindet. Für den Teil, den ihr mit Excel dazu geleistet habt, hast Du hier im Forum so einiges an Hilfe und Anregungen erhalten, so dass Du sicherlich auch ein Freund von Excellösungen sein könntest.
Einige Excelfreunde (mit und ohne Partner/in) treffen sich einmal im Jahr jedes Mal in einer anderen Stadt in Deutschland. Mehr dazu sieh mal hier: http://exceltreffen.de/
Vielleicht können wir uns ja mal auf einem der nächsten Treffen kennenlernen? Das nächste ist übrigens Mitte Juno kommenden Jahres in der Bergakademiestadt Freiberg (seit ein paar Tagen ein Teil des UNESCO-Weltkulturerbe Erzgebirge).
Würde mich/uns freuen.
Gruß Werner
.. , - ...
Anzeige
AW: bitteschön ... und noch nachgefragt ...
23.07.2019 21:51:26
erichm
Hallo Werner,
danke für die Info / den Hinweis. Werde mir das am Wochenende mal anschauen und anmelden (wobei ich kein solch excellenter EXCEL-Freak bin...)
mfg
AW: hierzu ...
24.07.2019 08:38:59
neopa
Hallo Erich,
... eine Anmeldung auf der dortigen Seite ist schnell getan. Und die für unser Treffen ist wahrscheinlich frühestens Anfang kommenden Jahres notwendig.
Es treffen sich da nicht Excel-Freaks sondern Excel-Freunde und deren Partner/innen. Auch wenn der Kern der Truppe sich schon seit vielen Jahren trifft, integrieren wir "Neue" gern wie schnell.
Ein Ziel der Treffen ist es auch, etwas mehr vom jeweiligen Treffens-Ort/-Region zu erfahren und kennenzulernen.
Gruß Werner
.. , - ...
Anzeige

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige