04. oktober 2002 - 07:36Der er
13 kommentarer og 1 løsning
Betinget formattering
Hej,
I en kolonne anvender jeg betinget formattering. De data som opfylder det betingede format, ønsker jeg herefter at slette på en gang. Hvordan gøres det smartest?
Jeg har forsøgt at anvende F5/speciel, og markere betingede formater, men jeg kan ikke få det til at virke.
De celler der opfylder kriterierne ligger måske indenfor et interval - så kan du evt. sorterer dine data og nemt udvælge rækkerne manuelt.
Med kendskab til kriterierne eller din betinget formattering kan der nemt laves en lille makro, som gør jobbet for dig - slet indhold eller hele rækken.
Jeg må give katborg ret - betinget formattering er ikke det rigtige at vælge (det er jo netop til _formattering_ - og en sletning er vel ikke formattering). Jeg ved ikke om autofilter kan gøre det. Men hvad med at lave en ekstra kolonne ved siden af med følgende formel: =HVIS(A1>0;A1;" ") I dette tilfælde har jeg sat betingelsen til at A1 skal være større end nul (men det sætter du selv). Hvis betingelsen er opfyldt vises indholdet af cellen (A1) - hvis betingelsen ikke er opfyldt vil cellen være tom.
bigbucks>> betinget formattering er vel netop til validering af data, og der er ingen problemer i at lave et VBA gennemløb, som checker f.eks. baggrundsfarven. Men ja, det kan løses på mange andre måder.
Man kan da gøre som flemming foreslår: f.eks. give baggrunden en bestemt farve og så modificeres en af baks makroer (http://tommy.bak.homepage.dk/colorfunctions.xls) til at slette cellen hvis den har en bestemt farve. Det skulle da nok være muligt.
Selvfølgelig kan makroen også laves, så den selv kontrollerer indholdet og efterfølgende sletter celler - altså helt uden betinget formatering. Men det er vel en smagssag.
flemmingdahl>> Det kan være du har ret - men når jeg kigger i betinget formatering, ser jeg kun rene formateringsmuligheder (dvs. forskellige måder at vise teksten på). Men jeg vil ikke lægge hovedet på blokken ;-)
Jeg tror bigbucks har ret. Jeg mener ikke at det er muligt at chekke på valideringsfarven. Heller ikke via VBA, da Interior.ColorIndex checker på originalfarven.
BAK>> Du kan godt checke på Interior.ColorIndex med vba også på valideringsfarven. Prøv blot med en celle og vis index'et med MsgBox Range("A1").Interior.ColorIndex Standard rød hedder -4142
Flemming-> jeg har nu testet og kan ikke få det til at virke. hvis cellen ikke har en farveformatering (med alm. farver) vil MsgBox Range("A1").Interior.ColorIndex returere -4142 uanset om den er betinget formateret eller ej. Hvis man så farver cellen sort (alm. farve) vil den give 1 uanset om betinget formatering har farvet cellen rød bagefter
Ja, jeg havde ikke testet ordenligt..! Men denne her laver en select på alle celler med betinget formatering, som har ColerIndex 3.
Sub TestForCondFormat() Dim c As Range, r As Range, r1 As Range, r2 As Range With ActiveSheet 'Check for Conditional Formatting Set c = .Cells.SpecialCells(xlCellTypeLastCell) c.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0" If .Cells.SpecialCells(xlCellTypeAllFormatConditions).Count > 1 Then c.FormatConditions.Delete Set r = .Cells.SpecialCells(xlCellTypeAllFormatConditions) 'Pick out those cells with same conditional formatting Interior 'but only those cells where the formatting condition has been met For Each r1 In r If r1.FormatConditions(1).Interior.ColorIndex = 3 And _ r1 = 2 Then If r2 Is Nothing Then Set r2 = r1 Else Set r2 = Union(r2, r1) End If End If Next r1 If Not r2 Is Nothing Then r2.Select Else MsgBox "No Conditional formatting exists" c.FormatConditions.Delete End If End If End With End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.