Autor
|
Thema: bestimmte bedingte Formatierung löschen (5756 mal gelesen)
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 21. Jul. 2015 08:14 <-- editieren / zitieren --> Unities abgeben:
Servus, ich erstelle über VBA die bedingte Formatierung mit Formel '=istformel' jetzt kommt es vor das kopieren etc. die bedingte Formatierung vervielfacht. Kann man per VBA diese bestimmte bedingte Formatierung in der Tabelle löschen, damit ich sie gleich neu erstellen kann? Anbei der Code falls ihn wer haben will.
Code: Sub istformel_A_AZ() Application.ScreenUpdating = False istformel_namen_erstellen Cells.Select 'Cells.FormatConditions.Delete Columns("A:XFD").Select Range("A11").Activate Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=istformel" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .Bold = False .Italic = True .Color = -6279056 .TintAndShade = 0 End With With Selection.FormatConditions(1).Borders(xlLeft) .LineStyle = xlContinuous .Color = -6279056 .TintAndShade = 0 .Weight = xlHairline End With With Selection.FormatConditions(1).Borders(xlRight) .LineStyle = xlContinuous .Color = -6279056 .TintAndShade = 0 .Weight = xlHairline End With With Selection.FormatConditions(1).Borders(xlTop) .LineStyle = xlContinuous .Color = -6279056 .TintAndShade = 0 .Weight = xlHairline End With With Selection.FormatConditions(1).Borders(xlBottom) .LineStyle = xlContinuous .Color = -6279056 .TintAndShade = 0 .Weight = xlHairline End With Selection.FormatConditions(1).StopIfTrue = False Range("A1").Select End Sub Sub istformel_namen_erstellen() ' ' Makro1 Makro '' ActiveWorkbook.Names.Add Name:="istformel", RefersToR1C1:= _ "=GET.CELL(48,INDIRECT(""ZS"",0))" ' ActiveWorkbook.Names("istformel").Comment = "" End Sub
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Wünsche: richtige Ebenen über Layer, Erweiterter Attribut-Editor "auffrischen", dyn. Xrefs, Mulitmodel, Halo4Texte, verschränkte Attribute , Linientypen überarbeiten (doppellinien) , XREF>VISRETAIN pro XREF, Fehler zwischen Normal MAP Civil beheben... Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 21. Jul. 2015 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Hallo Bernd, Interessante Sache, auch wenn ich das noch nie programmiert habe. Ich vermute mal Du hast es schon getestet wenn Du vor dem Selection.FormatConditions.Add ein Selection.FormatConditions.Delete machst? Werden aber alle gelöscht und nicht nur eine bestimmte. Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001
|
erstellt am: 21. Jul. 2015 11:05 <-- editieren / zitieren --> Unities abgeben:
Selection.FormatConditions.Delete Type:=xlExpression, Formula1:="=istformel" bringt einen Fehler ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Wünsche: richtige Ebenen über Layer, Erweiterter Attribut-Editor "auffrischen", dyn. Xrefs, Mulitmodel, Halo4Texte, verschränkte Attribute , Linientypen überarbeiten (doppellinien) , XREF>VISRETAIN pro XREF, Fehler zwischen Normal MAP Civil beheben... Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 21. Jul. 2015 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Schon klar, denn Du kannst damit ja nur alle bedingten Formatierungen in dem markierten Bereich löschen. Ansonsten fällt mir nur ein die Auswahl zu durchlaufen und die Formatierungen der einzelnen Zellen zu untersuchen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 25. Jul. 2015 19:37 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Hi, du musst in einer Schleife alle Zellen durchlaufen und für jede Zelle die bedingten Formatierungen wiederum in einer Schleife und dabei prüfen, ob es die relevante Bedingung ist - nach diesem Prinzip: Code: Sub BedFormatLoeschen() Dim rngZelle As Range Dim lngZaehler As Long Application.ScreenUpdating = False For Each rngZelle In Range("A11:XFD50") If rngZelle.FormatConditions.Count > 0 Then For lngZaehler = rngZelle.FormatConditions.Count To 1 Step -1 If rngZelle.FormatConditions(lngZaehler).Type = xlExpression Then If rngZelle.FormatConditions(lngZaehler).Formula1 = "=istformel" Then rngZelle.FormatConditions(lngZaehler).Delete DoEvents End If End If Next lngZaehler End If Next rngZelle Application.ScreenUpdating = True End Sub
Was mir bei deinem Code aufgefallen ist: du setzt für den gesamten Spaltenbereich A:XFD die bedingte Formatierung - somit müsstest du also auch alle Zellen in diesen Spalten und dazu jeweils alle Bedingungen durchlaufen. Ich habe den Code mal mit dem Zellbereich A11:XFD50 getestet - Zeitaufwand ca. 8 min. Wenn du also alle Zellen ändern willst, dann dauert das Jahre bis du durch bist...
------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 27. Jul. 2015 06:38 <-- editieren / zitieren --> Unities abgeben:
Danke Beverly sowas in der Richtung dachte ich mir schon nachdem KlaK das erwähnt hatte. "Ansonsten fällt mir nur ein die Auswahl zu durchlaufen und die Formatierungen der einzelnen Zellen zu untersuchen." ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Wünsche: richtige Ebenen über Layer, Erweiterter Attribut-Editor "auffrischen", dyn. Xrefs, Mulitmodel, Halo4Texte, verschränkte Attribute , Linientypen überarbeiten (doppellinien) , XREF>VISRETAIN pro XREF, Fehler zwischen Normal MAP Civil beheben... Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 27. Jul. 2015 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Nicht nur "Ansonsten" - es gibt nur diese eine Möglichkeit, wenn du einzelne bedingte Formatierungen löschen willst. Der generell einfachere Weg ist allerdings, wenn du für den Bereich die bedingte Formatierung komplett löschst und anschließend neu erstellst - den prinzipiellen Code hast du ja schon (für die eine Bedingung). Allerdings solltest du dabei auf Select verzichten können, weil man das in 99% aller Fälle kann. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2020
|
erstellt am: 27. Jul. 2015 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 27. Jul. 2015 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Hi, ich würde sagen, dass das nicht schneller läuft, denn der Fragesteller formatiert ja ALLE Zellen mit bedingter Formatierung, also müssen auch ALLE durchlaufen werden und nicht nur die SpecialCells. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|