Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1512to1516
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

mal wieder bed.Form. VBA

mal wieder bed.Form. VBA
21.09.2016 16:01:01
MB12
Hallo zusammen,
Hallo zusammen,
wie leicht zu sehen - der Recorder hat zugeschlagen. Hab schon einiges rausgeworfen, aber die ganze Selektiererei kann man doch sicher vereinfachen - Ihr habt mich gut erzogen...
Es kommen noch weitere bedingte Formatierungen, die nur auf sichtbare Zellen angewandt werden sollen, deshalb wäre ein "sauberes" Muster sehr nötig. Diese bedFor muss ich von Zeit zu Zeit aktualisieren, da viele Personen mit der Datei arbeiten.
Sub Makro BedFor()
Cells.FormatConditions.Delete
ActiveSheet.Range("$A$2:$K$15").AutoFilter Field:=1, Criteria1:=""
Range("L3:AE15").Select     'Bereich anpassen
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=0"
With Selection.FormatConditions(1).Interior
.Color = 13434777
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
Ach so - was müsste ich hier deklarieren?
Danke euch schön
Gruß, Margarete

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

Betreff
Datum
Anwender
Anzeige
AW: mal wieder bed.Form. VBA
21.09.2016 16:12:05
Werner
Hallo Margarete,
so:
Sub BedFor()
Cells.FormatConditions.Delete
ActiveSheet.Range("$A$2:$K$15").AutoFilter Field:=1, Criteria1:=""
Range("L3:AE15").SpecialCells(xlCellTypeVisible).FormatConditions _
.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=0"
Range("L3:AE15").SpecialCells(xlCellTypeVisible).Interior.Color = 13434777
Range("L3:AE15").SpecialCells(xlCellTypeVisible).FormatConditions(1).StopIfTrue = False
End Sub
Gruß Werner
AW: funktioniert nicht so ganz
21.09.2016 18:03:10
MB12
Hallo lieber Werner,
danke für die schnelle Hilfe. Habs eben getestet, es gibt noch ein kleines Problem:
Sub BedFor()
Cells.FormatConditions.Delete
ActiveSheet.Range("$A$2:$K$15").AutoFilter Field:=1, Criteria1:=""
Range("L3:AE15").SpecialCells(xlCellTypeVisible).FormatConditions _
.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=0"
'Ab hier ist es anscheinend keine bedingte Formatierung mehr, sondern eine normale  _
Zellformatierung:
Range("L3:AE15").SpecialCells(xlCellTypeVisible).Interior.Color = 13434777
Range("L3:AE15").SpecialCells(xlCellTypeVisible).FormatConditions(1).StopIfTrue = False
End Sub
Was muss noch geändert werden?
Liebe Grüße, Margarete
Anzeige
AW: funktioniert nicht so ganz
21.09.2016 19:55:56
Werner
Hallo Margarete,
sorry mein Fehler, nicht aufgepasst.
Sub BedFor()
Cells.FormatConditions.Delete
ActiveSheet.Range("$A$2:$K$15").AutoFilter Field:=1, Criteria1:=""
Range("L3:AE15").SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, Formula1:=0
Range("L3:AE15").FormatConditions(1).Interior.Color = 13434777
Range("L3:AE15").FormatConditions(1).StopIfTrue = False
End Sub
Gruß Werner
es hing also an den FormatConditions..
21.09.2016 21:01:48
MB12
Hi, Werner,
eigentlich logisch: ich hätte es nur übersetzen müssen, dann wäre es mir auch selbst aufgefallen. Wieder dazugelernt. :-)
Aber weiter oben müsste es doch bei
Formula1:="=0"
bleiben, oder?
Ich probier es einfach morgen früh aus.
Dank dir nochmal, Margarete
Anzeige
AW: Gerne u. Danke für die Rückmeldung.
21.09.2016 21:17:18
Werner
Hallo Margarete,
geht so und so.
Gruß Werner
Jetzt Problem mit mehreren BedFor
22.09.2016 11:51:53
MB12
Hi,
nachdem ich zwei bed.Formatierungen (Nr. 2+3) für den gleichen Bereich erstellt habe, geschieht folgendes:
Sub BedFor()    ' grün wenn Summenzelle = 0
Application.ScreenUpdating = False
Cells.FormatConditions.Delete
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
ActiveSheet.Range("$A$5:$K$1100").AutoFilter Field:=1, Criteria1:=""
' (1)Summenzelle grün wenn  = 0
Range("L7").CurrentRegion.SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, Formula1:=0
Range("L7").CurrentRegion.FormatConditions(1).Interior.Color = 13434777
Range("L7").CurrentRegion.FormatConditions(1).StopIfTrue = False
' (2)Tageszellen rot Vergangenheit (Datum in F1)
Range("L2:KO2").SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlCellValue, Operator:=xlLess, Formula1:="=$F$1"
Range("L2:KO2").FormatConditions(1).Interior.Color = 13551615
Range("L2:KO2").FormatConditions(1).StopIfTrue = False
'**********korrekt; wird ab L2 incl. 21.09. rot**************
' (3)Tageszelle grün heute (Datum in F1)
Range("L2:KO2").SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$F$1"
Range("L2:KO2").FormatConditions(1).Interior.Color = 13561798
Range("L2:KO2").FormatConditions(1).StopIfTrue = False
'**********falsch; jetzt sind alle Zellen ab L2 incl. 22.09. (heute) grün*************** _
ActiveSheet.ShowAllData
Columns("I:K").FormatConditions.Delete
Application.ScreenUpdating = True
Range("A1").Select
End Sub
Es ist mir klar, dass es mit der Priority zu tun haben muss, denn wenn ich 2+3 umstelle, wird das Tagesdatum rot - ächz.
Mit dem Makrorekorder funktioniert es, ist aber alles andere als schön:
Sub Makro6()
' Makro6 Makro
Range("L2:BI2").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="=$F$1"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=$F$1"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16752384
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("H2").Select
End Sub
Eine Idee wäre hochwillkommen, danke schön
Gruß, Margarete
Anzeige
AW: Jetzt Problem mit mehreren BedFor
23.09.2016 15:06:46
Werner
Hallo Margarete,
teste mal mit diesem Code. Bezüglich der Bereiche war ich mir im Unklaren. In deinem Code vom Markro Rekorder hast du jeweils den Bereich von L2 bis BI2, im Makro darüber jeweils von L2 bis KO2.
Ich habe mal den Bereich von L2 bis BI2 genommen, das musst du dann ggf. noch anpassen.
Hoffe es klappt.
Sub Makro3()
Application.ScreenUpdating = False
Cells.FormatConditions.Delete
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
ActiveSheet.Range("$A$5:$K$1100").AutoFilter Field:=1, Criteria1:=""
'#### Grün wenn Summenzeile =0 #####
Range("L7").CurrentRegion.SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, Formula1:=0
Range("L7").CurrentRegion.SpecialCells(xlCellTypeVisible).FormatConditions(Range("L7") _
.CurrentRegion.SpecialCells(xlCellTypeVisible).FormatConditions.Count).SetFirstPriority
Range("L7").CurrentRegion.SpecialCells(xlCellTypeVisible).FormatConditions(1).Interior.Color =  _
13434777
Range("L7").CurrentRegion.FormatConditions(1).StopIfTrue = False
'#### Rotfärbung wenn kleiner F1 #######
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlExpression, Formula1:="=UND($F$1>L2;L2"""")"
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(Range("L2:BI2") _
.SpecialCells(xlCellTypeVisible).FormatConditions.Count).SetFirstPriority
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(1).Font.Color = -16383844
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(1).Interior.Color = 13551615
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(1).StopIfTrue = False
'#### Grünfärbung wenn glein F1 #######
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions.Add _
Type:=xlExpression, Formula1:="=UND($F$1=L2;L2"""")"
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(Range("L2:BI2") _
.SpecialCells(xlCellTypeVisible).FormatConditions.Count).SetFirstPriority
Range("L2:O2").SpecialCells(xlCellTypeVisible).FormatConditions(1).Font.Color = -16752384
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(1).Interior.Color = 13561798
Range("L2:BI2").SpecialCells(xlCellTypeVisible).FormatConditions(1).StopIfTrue = False
ActiveSheet.ShowAllData
Columns("I:K").FormatConditions.Delete
Application.ScreenUpdating = True
Range("A1").Select
End Sub
Gruß Werner
Anzeige
funktioniert perfekt & ganz andere Frage
24.09.2016 11:29:31
MB12
Hallo lieber Werner,
toll, dass du dir nochmal die Zeit genommen hast - jetzt passt es genau, danke herzlich. Ich muss mir erst mal genauer ansehen, was du geändert hast, damit ich das auch für die Zukunft weiß. Denn bedFor werden bei uns sehr häufig ohne Nachdenken eingesetzt.
Inzwischen habe ich mir auch einen Code für die Erneuerung von Borders zusammengestrickt - oh Wunder, es klappt.
Eine ganz andere Frage:
Nachdem ich gefühlte Ewigkeiten mit VBA rumexperimentiere, wird endlich bei uns im November ein VBA-Kurs angeboten (VHS SHA Nr. 6251067 ), zu dem ich mich sofort angemeldet habe. (Bei jeder Sprache sollte man erst mal Grammatik-Grundkenntnisse haben). Den Dozenten habe ich mal gegoogelt. Man weiß ja nie: kennst du diesen Herrn aus Michelfeld zufällig - etwas eigenartig? Will hier den Namen nicht erwähnen. Ich werde auch Case mal fragen.
Genieße das schöne WE - wird wohl das letzte für dieses Jahr sein.
Grüßle, Margarete
Anzeige
AW: Danke für die Rückmeldung
24.09.2016 14:27:49
Werner
Hallo Margarete,
schön, dass es funktioniert.
Bezüglich deiner anderen Frage: Der Name sagt mir nichts. Das soll aber nichts bedeuten, da ich jetzt nicht der große Excel oder VBA Experte bin.
Das mit dem Wochenende genießen wird bei mir wohl eher nichts -es ist arbeiten angesagt-, trotzdem Danke und dann wenigstens dir ein schönes Wochenende.
Gruß Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige