Fjerne Betingede formater, men ikke effekten

November 13  by Eliza

Charlie lurte på om det er en måte å "gjøre permanente" effektene av betinget formatering til enhver tid. For eksempel, hvis en betinget format spesifiserer at en bestemt celle være fet rød type, så Charlie ønsket en måte å fjerne det betingede formatet og gjør cellen fet og rød.

Det er ingen iboende måte å gjøre dette i Excel; ingen av Lim Spesielle alternativene vil gjøre oppgaven, som ønsket. Du kan imidlertid bruke en makro til å utføre oppgaven:

Option Explicit
Sub PasteFC ()
Application.ScreenUpdating = False
Dim rWhole Som Range
Dim Rceii Som Range
Dim NDX As Integer
Dim FCFont Som Font
Dim FCBorder Som Border
Dim FCInt Som Interior
Dim x As Integer
Dim iBorders (3) As Integer

iBorders (0) = xlLeft
iBorders (1) = xlRight
iBorders (2) = xlTop
iBorders (3) = xlBottom

Satt rWhole = Selection

For Hver Rceii I rWhole
rCell.Select
NDX = ActiveCondition (Rceii)
Hvis NDX <> 0 Then
'Endre Font info
Satt FCFont = rCell.FormatConditions (NDX) .Font
Med rCell.Font
.Bold = NewFC (.Bold, FCFont.Bold)
.Italic = NewFC (.Italic, FCFont.Italic)
.Underline = NewFC (.Underline, FCFont.Underline)
.Strikethrough = NewFC (.Strikethrough, _
FCFont.Strikethrough)
.ColorIndex = NewFC (.ColorIndex, FCFont.ColorIndex)
Avslutt med
'Endre Border Info for hver av de fire typene
For x = 0 til 3
Satt FCBorder = rCell.FormatConditions (NDX) .Borders (iBorders (x))
Med rCell.Borders (iBorders (x))
.LineStyle = NewFC (.LineStyle, FCBorder.LineStyle)
.Weight = NewFC (.Weight, FCBorder.Weight)
.ColorIndex = NewFC (.ColorIndex, FCBorder.ColorIndex)
Avslutt med
Neste x
'Endre interiøret info
Satt FCInt = rCell.FormatConditions (NDX) .Interior
Med rCell.Interior
.ColorIndex = NewFC (.ColorIndex, FCInt.ColorIndex)
.Pattern = NewFC (.Pattern, FCInt.Pattern)
Avslutt med
'Slett FC
rCell.FormatConditions.Delete
End If
Neste
rWhole.Select
Application.ScreenUpdating = True
MsgBox ("The Formatering basert på de betingelser" & vbCrLf & _
"I området" & rWhole.Address & vbCrLf & _
"Har blitt gjort standard for de celler" & vbCrLf & _
"Og den Betinget formatering er fjernet")
End Sub

Funksjon NewFC (vCurrent Som Variant, vNew Som Variant)
Hvis IsNull (vNew) Deretter
NewFC = vCurrent
Else
NewFC = vNew
End If
End Function

Funksjon ActiveCondition (RNG Som Range) As Integer
'Chip Pearson http://www.cpearson.com/excel/CFColors.htm
Dim NDX Som Long
Dim FC Som FormatCondition

Hvis rng.FormatConditions.Count = 0 Then
ActiveCondition = 0
Else
For NDX = 1 Til rng.FormatConditions.Count
Satt FC = rng.FormatConditions (NDX)
Velg sak FC.Type
Tilfellet xlCellValue
Velg sak FC.Operator
Tilfellet xlBetween
Hvis CDbl (rng.Value)> = CDbl (FC.Formula1) Og _
CDbl (rng.Value) <= CDbl (FC.Formula2) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet xlGreater
Hvis CDbl (rng.Value)> CDbl (FC.Formula1) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet xlEqual
Hvis CDbl (rng.Value) = CDbl (FC.Formula1) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet xlGreaterEqual
Hvis CDbl (rng.Value)> = CDbl (FC.Formula1) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet xlLess
Hvis CDbl (rng.Value) <CDbl (FC.Formula1) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet xlLessEqual
Hvis CDbl (rng.Value) CDbl (FC.Formula1) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet xlNotBetween
Hvis CDbl (rng.Value) <= CDbl (FC.Formula1) Eller _
CDbl (rng.Value)> = CDbl (FC.Formula2) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet Else
Debug.Print "UKJENT OPERATØR"
End Select
Tilfellet xlExpression
Hvis Application.Evaluate (FC.Formula1) Deretter
ActiveCondition = NDX
Exit Function
End If
Tilfellet Else
Debug.Print "ukjent type"
End Select
Neste NDX
End If
ActiveCondition = 0
End Function

Det er tre prosedyrer i denne løsningen. Den siste fremgangsmåten, ActiveCondition, er utformet til å returnere et tall som angir hvilken av de betingelser i et betinget format er i virkning. Denne rutinen ble funnet på Chip Pearson nettsted, som indikert i den første kommentaren til funksjonen. (Ingen vits i å finne opp hjulet.:>))

Senteret funksjon, NewFC, blir bare brukt til å bestemme hvilken av to verdier er gyldige. Prosedyren du faktisk kjøre, men er PasteFC. Bare velge cellene du vil konvertere til eksplisitt formatering, og deretter kjøre prosedyren. Det sjekker hver celle du har valgt for hvilken formatering tilstanden er aktiv, bestemmer formatering av den tilstanden, og da gjelder det å cellen. Endelig er betinget formatering for cellen fjernes.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (1947) gjelder for Microsoft Excel 97, 2000, 2002, og 2003.