Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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
bedingte Formatierungen entfernen und setzen
18.06.2013 11:12:56
Andreas
Hallo Excelprofis,
ich komme mal wieder nicht weiter und hoffe auf eure Hilfe. Folgendes Problem:
Ich habe ein Blatt mit vielen bedingten Formatierungen. Davon müssen einige vor dem Druck des Blattes entfernt und danach wieder gesetzt werden.
Ich habe mal per Makroaufzeichnung den Code für die bedingten Formatierungen erstellt.
Sub bedForm()
Application.Goto Reference:="StdBereich01"
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""K"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 8124360
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""EK"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 8124360
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""FS"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 15506431
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""P"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 14277081
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""NT"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 14277081
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""X"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 14277081
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Application.Goto Reference:="StdBereich02"
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ZÄHLENWENN(Feiertage;C$7)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 14281213
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=C$7="""""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.Pattern = xlNone
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WOCHENTAG(C$7;2)>5"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 14277081
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

1. Problem: Wie kann man den Code für den StdBereich01 vereinfachen, da ja mehrere Werte die gleiche Formatierung erhalten.
2. Wie kann ich die Formatierungen des StdBereich01 vor dem Druck entfernen und nach dem Druck wieder setzen.
So sehen die Formatierungen aus:
Zellwert= "K" oder "EK" Hintergrund = 200 247 123 ( 8124360 ) =StdBereich01
Zellwert= "FS" Hintergrund = 255 155 236 ( 15506431 ) =StdBereich01
Zellwert= "P" oder "NT" oder "X" Hintergrund = 217 217 217 ( 14277081 ) =StdBereich01
Zellwert= "U" oder "S" Hintergrund = 253 233 217 ( 14281213 ) =StdBereich01
Zellwert= "?" Hintergrund = 255 0 0 ( 255 ) =StdBereich01
Zellwert= "UF" Hintergrund = 251 212 179 ( 11785467 ) =StdBereich01
Zellwert= "KoN" oder "EKoN" Hintergrund = 255 255 0 ( 65535 ) =StdBereich01
Formel: =ZÄHLENWENN(Feiertage;C$7) Hintergrund = 253 233 217 ( 14281213 ) =StdBereich02
Formel: =C$7="" Hintergrund = ohne =StdBereich02
Formel: =WOCHENTAG(C$7;2)>5 Hintergrund = 217 217 217 ( 14277081 ) =StdBereich02
Noch anzumerken ist, dass sich beide Bereiche im wesentlich überschneiden.
Ich denke mal es müsste so ablaufen:
1. Alle bedingten Formatierungen Löschen
2. die Bedingten Formatierungen des StdBereich02 wieder setzen, die sollen im Ausdruck erscheinen
3. drucken
4. die Bedingten Formatierungen des StdBereich01 wieder setzen
Kann mir Jemand helfen, hab von VBA keine Ahnung.
Vielen Dank!
mfg, Andreas

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

Betreff
Datum
Anwender
Anzeige
AW: bedingte Formatierungen entfernen und setzen
18.06.2013 11:15:07
Klaus
Hallo Andreas,
ein anderer Ansatz.
Vielleicht ist es einfacher, du erstellst dir ein Hilfsblatt "Ausdrucken". Im "BeforePrint" Ereigniss kopierst du die zu druckenden Inhalte dort hin, aber nur als "Werte einfügen". Die Formate im Hilfsblatt "Ausdrucken" kannst du einmalig fixieren oder im Makro setzen.
Grüße,
Klaus M.vdT.

AW: bedingte Formatierungen entfernen und setzen
18.06.2013 11:42:45
Andreas
Hallo Klaus M.vdT.,
Danke für die schnelle Antwort. Diesen Lösungsansatz habe ich auch schon in Betracht gezogen. Da aber im zu druckenden Blatt über ein Commandbutton vorher immer verschiedene Zeilen ausgeblendet werden (Dank deiner Hilfe vom 18.03.13), würde die Formatierung (Schriftart, Schriftgröße usw.) der einzelnen Zeilen im Hilfsblatt nicht funktionieren.
mfg, Andreas

Anzeige
Musterdatei? owT
18.06.2013 11:45:59
Klaus
.

AW: Musterdatei? owT
18.06.2013 12:05:59
Andreas
Bitte bei Abfrage Verknüpfungen nicht aktualisieren, da ja Ursprungsdateien fehlen. Mit dem Commandbutton werden alle Zeilen ausgeblendet bei denen A8:A267 leer sind.
https://www.herber.de/bbs/user/85897.xlsm
Danke für die Hilfe!
mfg, Andreas

AW: Musterdatei? owT
18.06.2013 13:01:13
Klaus
Hi Andreas,
lege in deiner Musterdatei ein neues Blatt an und nenne es "Ausdruck".
Folgendes Makro zieht dir dann alle sichtbaren Zellen aus "Übersicht" in das Blatt "Ausdruck", unter Einhaltung der Formatierungen, der Zellverbünde (auf die du aber verzichten solltest!) usw und entfernt alle bedingten Formatierungen, so dass das Blatt gedruckt werden kann.
Sub KopiereRueber()
'alles alte rauswerfen
Sheets("Ausdruck").Cells.Delete
'Druck-Blatt kopieren, aber nicht die ausgeblendeten!
Sheets("Übersicht").UsedRange.SpecialCells(xlCellTypeVisible).Copy
With Sheets("Ausdruck")
With .Range("A1")
'Werte einfpgen
.PasteSpecial xlPasteValues
'Formate drüberbügeln
.PasteSpecial xlPasteFormats
End With
'Kopierameisen verjagen
Application.CutCopyMode = False
With .Cells
'bedingte Formatierungen loswerfen
.FormatConditions.Delete
'Spaltenbreiten anpassen - hier musst du eventuell noch Hand anlegen
.EntireColumn.AutoFit
End With
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Musterdatei? owT
18.06.2013 13:26:33
Andreas
Hallo Klaus M.vdT.,
Vielen Dank für die Hilfe! Funktioniert schon fast perfekt. Allerdings müssen die Spaltenbreiten und Zeilenhöhen des Blattes "Ausdruck" genau wie im Original sein. Außerdem darf nur der Bereich A1 bis AI267 unter den schon vorhandenen Bedingungen kopiert werden, da nur diese ausgedruckt werden sollen.
mfg, Andreas

verbesserte Version:
18.06.2013 13:40:25
Klaus
Hi Andreas,
dein Wunsch ist mir Befehl :-)
so vielleicht?
Sub KopiereRueber()
'Bildschirmflackern abschalten
Application.ScreenUpdating = False
'alles alte rauswerfen
Sheets("Ausdruck").Cells.Delete
'Druck-Blatt kopieren, aber nicht die ausgeblendeten!
Sheets("Übersicht").Range("A1:AI267").SpecialCells(xlCellTypeVisible).Copy
With Sheets("Ausdruck")
With .Range("A1")
'Werte einfpgen
.PasteSpecial xlPasteValues
'Formate drüberbügeln
.PasteSpecial xlPasteFormats
End With
'Kopierameisen verjagen
Application.CutCopyMode = False
'bedingte Formatierungen loswerfen
.Cells.FormatConditions.Delete
Dim i As Long
'Spaltenbreiten anpassen (Spalte für Spalte, weiss grad nix sinnigeres)
For i = 1 To .UsedRange.Columns.Count
.Columns(i).ColumnWidth = Sheets("Übersicht").Columns(i).ColumnWidth
Next i
'dito Zeilenhöhen
For i = 1 To .UsedRange.Rows.Count
.Rows(i).RowHeight = Sheets("Übersicht").Rows(i).RowHeight
Next i
End With
'Bildschirmflackern abschalten
Application.ScreenUpdating = True
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: vielen, vielen Dank! Das funktioniert!
18.06.2013 13:50:25
Andreas
Vielen Dank!
Den Rest bekomme ich bestimmt alleine hin.
mfg, Andreas

Danke für die Rückmeldung! owT.
18.06.2013 13:52:35
Klaus
.

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige