Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
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

VBA bedingte Form. für mehrere Blätter

VBA bedingte Form. für mehrere Blätter
20.11.2016 16:00:24
MB12
Hallo zusammen,
diese bedingten Formatierungen möchte ich auf bestimmte Tabellenblätter anwenden, um sie in Abständen zu erneuern; z.B. mit
For a = 4 To 5 'in der Realität ca 30 Blätter -folgen alle aufeinander
oder Array
Sheets(Array("Finale_Projektierung", "Definition"))
Beispieldatei:
https://www.herber.de/bbs/user/109576.xlsm
Das bisherige Makro (in Modul "BedingteFormatierungen") stammt überwiegend vom Makrorecorder, ich muss es immer 30x durchführen:
Sub Gold_Kunden()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Columns("A:O").EntireColumn.Hidden = False
Cells.FormatConditions.Delete
Range("A6:H49").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$D6=""x"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13431551
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
ActiveCell.Range("A1:L49").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$n6=""na"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249977111117893
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("D1").Select
End Sub
Kann mir jemand helfen?
Vielen Dank und beste Grüße
Margarete

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA bedingte Form. für mehrere Blätter
20.11.2016 18:11:03
Michael
Hi Margarete,
ungefähr so:
Sub Gold_Kunden()
Dim shNr&, shVon&, shBis&
With Sheets("Inhalt")
shVon = Range("G1")
shBis = Range("I1")
End With
Application.ScreenUpdating = False
For shNr = shVon To shBis
With Sheets(shNr)
If .FilterMode Then .ShowAllData
.Columns("A:O").EntireColumn.Hidden = False
.Cells.FormatConditions.Delete
With .Range("A6:H49")
.FormatConditions.Add Type:=xlExpression, Formula1:="=$D6=""x"""
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13431551
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
'    Hier analog ....
'    ActiveCell.Range("A1:L49").Select
'    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$n6=""na"""
'    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
'    With Selection.FormatConditions(1).Interior
'        .PatternColorIndex = xlAutomatic
'        .ThemeColor = xlThemeColorDark1
'        .TintAndShade = -0.249977111117893
'    End With
'    Selection.FormatConditions(1).StopIfTrue = False
'    hier mit .goto, siehe anderer Thread
'    Range("D1").Select
End With ' Sheets(shNr)
Next
End Sub
Bei dem ersten With zum Einlesen des von/bis kannst Du ja noch eine Fehlerbehandlung einbauen und die Routine ggf. vorzeitig mit einer Fehlermeldung verlassen.
Schöne Grüße,
Michael
Anzeige
genau dieses...
20.11.2016 19:24:33
MB12
Hi Michael,
genau die zwei Punkte:
Direkte Ref. zum Blatt "Inhalt" und die "Selection" raus
(Ich wusste nicht, dass ich auch hier bei "With Selection.FormatConditions(1)" so vorgehen kann.
Hab herzlichen Dank und noch einen schönen sturmfreien Abend.
Grüßle, Margarete
AW: genau dieses...
20.11.2016 21:43:49
Michael
Hi Margarete,
freut mich (auch wenn ich etwas skeptisch mit dem untersten select - habe ich noch nicht ausprobiert).
Jetzt geht's zum zeitversetzten Tatort...
Gruß zum Schluß,
Michael
AW: funktioniert!!
21.11.2016 08:07:07
MB12
Guten Morgen, Michael,
Erfahrung schlägt Skepsis!
Ich musste nur noch Long mit Integer ersetzen, dann lief es. Mit dem GoTo im zweiten Teil tue ich mich noch schwer, weil noch nie angewandt. Aber et wird schon werrrn..
Grüßle, Margarete
Anzeige
Mit der Dimensionierung...
21.11.2016 08:45:19
Case
Hallo Margarete, :-)
... von Long oder Integer dürfte das nichts zu tun haben. Was Du aber auf jeden Fall berücksichtigen musst - im ersten "With-Block" Punkte vor ".Range" setzen, sonst funktioniert es nur, wenn Du auch gerade in dem Tabellenblatt bist. ;-)
Hier mal zwei Beispiele...
"Application.Goto" wechselt das Tabellenblatt. Wenn Du das nicht möchtest - am Schluß zurücksetzen, siehe "Main_1".
Was macht der VBA-Kurs? ;-)
Servus
Case

Anzeige
AW: Mit der Dimensionierung...
21.11.2016 10:54:10
MB12
Hi Ralf,
danke für die Korrektur; es war also Zufall, dass es lief. Sonst hätte ich lang suchen können, woran es tatsächlich lag. Das werde ich nicht vergessen.
"Application.Goto" - ich denke, das habe ich verstanden.
Und jetzt Luxus pur: Ich werde "Main1" verwenden, da ich dann 1. das Index-Blatt nicht benötige und 2. die betroffenen Blätter auch verschoben werden können. Also die Array-Lösung.
Der Kurs war bisher nur an einem Abend, es kommen noch zwei.... - bin also schon ein richtiger Profi - haha
Nochmal herzlichen Dank an beide :-) :-)
Gruß, Margarete

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige