Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
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 suchen u. ersetzen durch VBA

bedingte Formatierung suchen u. ersetzen durch VBA
19.03.2009 06:55:03
Peter
Guten Tag
Ich habe in einer Tabelle an verchiedenen Orten immer die gleiche bedingte Formatierung (Bedingung ist eine Formel). Nun möchte ich diese überall durch eine andere bedingte Formatierung ersetzen.
Ist dies möglich, mit Hilfe von VBA? Wenn ja, wie?
Danke für eine Antwort.
Gruss, Peter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bedingte Formatierung ersetzen - VBA
19.03.2009 08:18:31
Erich
Hi Peter,
so als Prototyp:

Option Explicit
Sub Makro1()
With Cells(1, 1).SpecialCells(xlCellTypeAllFormatConditions)
.Select
With .FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=A5>1,5"
End With
.FormatConditions(1).Interior.ColorIndex = 34
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: bedingte Formatierung ersetzen - VBA
19.03.2009 10:44:17
Peter
Hallo Erich
Vielen Dank für den Prototyp. Der funktioniert einwandfrei. Bei mir ist die bedingte Formatierung etwas umfangreicher und ich habe es nicht geschafft, die nachstehend auskommentierten Codezeilen einzubauen.
Für Hilfe bin ich dankbar.
Gruss, Peter

Sub AAAABedingte_Formatierung()
With ActiveWorkbook.Sheets("Jahresrechnung")
With Cells(1, 1).SpecialCells(xlCellTypeAllFormatConditions)
.Select
With .FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=A5>1,5"
End With
.FormatConditions(1).Interior.ColorIndex = 34
End With
''      With .FormatConditions(1).Borders(xlLeft)
''        .LineStyle = xlContinuous
''        .Weight = xlThin
''        .ColorIndex = xlAutomatic
''   With .FormatConditions(1).Borders(xlLeft)
''        .LineStyle = xlContinuous
''        .Weight = xlThin
''        .ColorIndex = xlAutomatic
''    End With
''    With .FormatConditions(1).Borders(xlRight)
''        .LineStyle = xlContinuous
''        .Weight = xlThin
''        .ColorIndex = xlAutomatic
''    End With
''    With .FormatConditions(1).Borders(xlTop)
''        .LineStyle = xlContinuous
''        .Weight = xlThin
''        .ColorIndex = xlAutomatic
''    End With
''    With .FormatConditions(1).Borders(xlBottom)
''        .LineStyle = xlContinuous
''        .Weight = xlThin
''        .ColorIndex = xlAutomatic
''    End With
''    With .FormatConditions(1).Interior
''        .ColorIndex = 22
''        .Pattern = xlSemiGray75
''    End With
End With
End Sub


Anzeige
AW: bedingte Formatierung ersetzen - VBA
19.03.2009 12:41:03
Daniel
Hi
das liegt nicht an den bedingten Formaten, sondern daran, daß du dich in der Struktur der WITH-Klammern verheddert hast. Wenn man die richtig stellt, funktionierts einwandfrei.

Sub AAAABedingte_Formatierung()
With ActiveWorkbook.Sheets("tabelle1")
With .Cells(1, 1).SpecialCells(xlCellTypeAllFormatConditions)
.Select
With .FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=A5>1,5"
End With
.FormatConditions(1).Interior.ColorIndex = 34
With .FormatConditions(1).Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .FormatConditions(1).Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .FormatConditions(1).Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .FormatConditions(1).Borders(xlTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .FormatConditions(1).Interior
.ColorIndex = 22
.Pattern = xlSemiGray75
End With
End With
End With
End Sub


(den Sheetnamen habe ich zum Testen angepasst)
allerdings würde ich empfehlen, beim Formulieren der Formel für die Bedingtte Formatierung die Z1S1-Schreibweise zu verwenden und nicht die A1-Schreibweise.
die A1-Schreibweise ist gefährlich, da es hier auch darauf ankommt, welche Zelle gerade aktiv, daher ist hier die Z1S1-Schreibweise wesentlich sicherer.
du kannst die Z1S1-Schreibweise genauso verwenden (in Deutsch), wie die A1-Schreibweise, ohne irgendwelche andern Angaben machen zu müssen. bei der Bedingent Formatierung ist es Excel egal.
Gruß, Daniel

Anzeige
AW: etwas übersichtlicher
19.03.2009 13:08:43
Erich
Hi Peter,
so ist es etwas übersichtlicher:

Sub AAAABedingte_Formatierung2()
With ActiveWorkbook.Sheets("Tabelle1")
With .Cells(1, 1).SpecialCells(xlCellTypeAllFormatConditions)
With .FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=Z(-1)S1>1,5" 'anpassen
End With
With .FormatConditions(1)
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Interior
.ColorIndex = 22
.Pattern = xlSemiGray75
End With
End With
End With
End With
End Sub

Zwei Dinge waren bei deinem Code doppelt:
.FormatConditions(1).Interior.ColorIndex = 34 und
'' With .FormatConditions(1).Interior
'' .ColorIndex = 22
und die Borders(xlLeft). Aber das reichen ja jetzt die Borders ohne Klammern aus.
Das ".Select" wird - wegen Z1S1 - nicht mehr gebraucht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: etwas übersichtlicher
19.03.2009 22:15:48
Peter
Hallo Erich und Daniel
Vielen Dank für die Lösung. Diese funktioniert so grundsätzlich. In meiner etwas umfangreicheren Vorlage (aus der ich praktisch allen Text entfernt habe), passiert jedoch etwas zuviel:
Alle bedingten Formatierungen sind in der Spalte E enthalten und nur diese sollen geändert werden. Wenn ich nun den Makro laufen lasse, wird die bedingte Formatierung praktisch im ganzen Druckbereich eingegeben, anstelle in Spalte E.
Im hochgeladenen Datei ist in Spalte E bereits die neue Formatierung drin. Spielt für die Demo, dass auch die anderen Spalten mit bedingter Formatierung versehen werden allerdings keine Rolle.
Es wäre super, wenn der Makro auch in dieser Vorlage funktionieren würde.
Gruss, Peter
https://www.herber.de/bbs/user/60478.xls
Anzeige
AW: etwas übersichtlicher
20.03.2009 00:15:32
Erich
Hi Peter,
in den beiden folgenden Varianten sind die Änderungen der bed. Formatierung
auf Spalte E begrenzt:

Option Explicit
Sub AAAABedingte_Formatierung3()
With ActiveWorkbook.Sheets("Jahresrechnung")
With Intersect(.Columns(5), _
.Cells(1, 1).SpecialCells(xlCellTypeAllFormatConditions))   ' bed.Form Sp. E
With .FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=WENN(ISTFEHLER(Check_A+Check_V)" _
& ";1;WENN(RUNDEN(Check_A+Check_V;2)0;1;0))" 'anpassen
End With
With .FormatConditions(1)
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Interior
.ColorIndex = 22
.Pattern = xlSemiGray75
End With
End With
End With
End With
End Sub
Sub AAAABedingte_Formatierung4()
With ActiveWorkbook.Sheets("Jahresrechnung")
With Intersect(.Columns(5), _
.Cells(1, 5).SpecialCells(xlCellTypeSameFormatConditions)) 'bed.Form. wie E1
With .FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=WENN(ISTFEHLER(Check_A+Check_V)" _
& ";1;WENN(RUNDEN(Check_A+Check_V;2)0;1;0))" 'anpassen
End With
With .FormatConditions(1)
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Interior
.ColorIndex = 22
.Pattern = xlSemiGray75
End With
End With
End With
End With
End Sub

Übrigens:
Die verbundenen Zellen tragen erheblich zum Problem bei. Verbundene Zellen sind IMHO des Teufels.
Ich würde sie ersetzen durch Format "Über Auswahl zentrieren".
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: etwas übersichtlicher
20.03.2009 14:55:53
Peter
Hallo Erich
Der Code funktioniert nun einwandfrei.
Danke auch für den Hinweis zu "Über Auswahl zentrieren".
Ich werde hier partiell umstellen können. Allerdings brauche ich in bestimmten Berichten verbundene Zellen, da ich bei Berichten mit Zahlenkollonnen keine andere Möglichkeit kenne, wenn die Textblöcke in Blocksatz erscheinen sollen.
Nochmals besten Dank für alle Unterstützung.
Gruss, Peter

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige