Format condicional VBA | Apliqueu el format condicional mitjançant VBA Excel

Format condicional a Excel VBA

Podem aplicar format condicional a una cel·la o a un interval de cel·les d'Excel. Un format condicional és un format que s'aplica només a les cel·les que compleixen determinats criteris, per exemple valors superiors a un valor determinat, valors positius o negatius, o valors amb una fórmula concreta, etc. Aquest format condicional també es pot fer a la programació VBA excel mitjançant el 'Col·lecció Condicions de format’Al macro / procediment.

Format Condition s’utilitza per representar un format condicional que es pot establir trucant a un mètode que retorni una variable d’aquest tipus. Conté tots els formats condicionals per a un sol interval i només pot contenir tres condicions de format.

FormatConditions.Add / Modify / Delete s'utilitza a VBA per afegir / modificar / eliminar objectes FormatCondition a la col·lecció. Cada format està representat per un objecte FormatCondition. FormatCondicions és una propietat de l'objecte Range i Afegeix té els paràmetres següents amb la sintaxi següent:

FormatConditions.Add (Tipus, Operador, Fórmula 1, Fórmula 2) 

La sintaxi Afegeix una fórmula té els arguments següents:

  • Tipus: Obligatori, representa si el format condicional es basa en el valor present a la cel·la o en una expressió
  • Operador: Opcional, representa l'operador que s'ha d'utilitzar amb un valor quan "Tipus" es basa en el valor de la cel·la
  • Fórmula 1: Opcional, representa el valor o l’expressió associat al format condicional.
  • Fórmula 2: Opcional, representa el valor o l'expressió associat a la segona part del format condicional quan el paràmetre: "Operador" és "xlBetween" o "xlNotBetween"

FormatConditions.Modify també té la mateixa sintaxi que FormatCondicions.Afegeix.

A continuació es mostra la llista d’alguns valors / enumeració que poden adoptar alguns paràmetres de ‘Afegeix’ / ‘Modifica’:

Exemples de format condicional VBA

A continuació es mostren els exemples de format condicional a Excel vba.

Podeu descarregar aquesta plantilla de format condicional VBA aquí - Plantilla de format condicional VBA

Exemple 1

Diguem que tenim un fitxer Excel que conté el nom i les marques d'alguns estudiants i volem determinar / ressaltar les marques com a negres i blaves de color superior a 80 i negres i vermelles de menys de 50. Vegem les dades contingudes al fitxer:

Utilitzem la funció FormatConditions.Add com es mostra a continuació per aconseguir-ho:

  • Aneu a Desenvolupador -> Visual Basic Editor:

  • Feu clic amb el botó dret del ratolí al nom del llibre al tauler "Projecte-VBAProjecte "->" Insereix "->" Mòdul ".

  • Ara escriviu el codi / procediment en aquest mòdul:

Codi:

 Format de sub () Final de sub 

  • Definiu la variable rng, condició1, condició2:

Codi:

 Subformat () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition End Sub 

  • Definiu / corregiu l’interval en què es vol formatar condicional mitjançant la funció ‘Rang’ de VBA:

Codi:

 Subformat () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") End Sub 

  • Suprimiu / esborreu qualsevol format condicional existent (si n'hi ha) de l'interval, mitjançant "FormatConditions.Delete":

Codi:

 Subformating () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete End Sub

  • Ara definiu i definiu els criteris per a cada format condicional mitjançant "FormatConditions.Add":

Codi:

 Subformating () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete Set condition1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80 ") Establir condició2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") End Sub 

  • Definiu i configureu el format que s'ha d'aplicar per a cada condició

Copieu i enganxeu aquest codi al mòdul de la vostra classe VBA.

Codi:

 Subformating () 'Definició de les variables: Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition' Fixació / Configuració de l'interval en què es vol formatar condicional Estableix rng = Range ("B2", "B11") 'To elimineu / esborreu qualsevol format condicional existent de l'interval rng.FormatConditions.Delete 'Definició i configuració dels criteris per a cada format condicional Establir condition1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80") Establir condition2 = rng.FormatConditions Add (xlCellValue, xlLess, "= 50") 'Definició i configuració del format que s'aplicarà per a cada condició Amb condició1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font. Negre = True End With End Sub 

Ara, quan executem aquest codi amb la tecla F5 o manualment, veiem que les marques inferiors a 50 es ressalten en negreta i vermella, mentre que les que superen els 80 es ressalten en negreta i blava de la següent manera:

Nota: Algunes de les propietats de l’aparició de cel·les amb format que es poden utilitzar amb FormatCondition són:

Exemple 2

Diguem que a l’exemple anterior també tenim una altra columna que afirma que l’alumne és un “Topper” si obté més de 80 punts, en cas contrari s’escriu contra ells. Ara volem destacar els valors que s’indiquen com a ‘Topper’ com a negreta i blava. Vegem les dades contingudes al fitxer:

En aquest cas, el codi / procediment funcionaria de la següent manera:

Codi:

 Sub TextFormatting () Final Sub 

Definiu i configureu el format que s'ha d'aplicar per a cada condició

Codi:

 Sub TextFormatting () With Range ("c2: c11"). FormatConditions.Add (xlTextString, TextOperator: = xlContains, String: = "topper") With .Font .Bold = True .Color = vbBlue End With End With End Sub 

Podem veure al codi anterior que volem provar si l'interval: "C2: C11" conté la cadena: "Topper", de manera que el paràmetre: "Operador" de "Format.Add" pren l'enumeració: "xlContains", per provar aquesta condició a l'interval fix (és a dir, C2: C11) i, a continuació, feu el format condicional requerit (canvis de tipus de lletra) en aquest interval.

Ara, quan executem aquest codi manualment o prement la tecla F5, veiem que els valors de les cel·les amb 'Topper' es destaquen en blau i negreta:

Nota: Per tant, hem vist en els dos exemples anteriors com funciona el mètode "Afegeix" en cas de tenir algun criteri de valor de cel·la (cadena numèrica o de text).

A continuació es mostren alguns altres casos / criteris que es poden utilitzar per provar i, per tant, aplicar el format condicional VBA a:

  • Format per període de temps
  • Condició mitjana
  • Estat de l'escala de colors
  • Condició IconSet
  • Condició del banc de dades
  • Valors únics
  • Valors duplicats
  • Valors Top10
  • Condició percentil
  • Estat en blanc, etc.

Amb diferents condicions a provar, els paràmetres de "Afegeix" prenen diferents valors / enumeració.

Coses que cal recordar sobre el format condicional de VBA

  • El mètode "Afegeix" amb "FormatConditions" s'utilitza per crear un format condicional nou, el mètode "Suprimeix" per suprimir qualsevol format condicional i el mètode "Modifica" per alterar qualsevol format condicional existent.
  • El mètode "Afegeix" amb "Col·lecció FormatConditions" falla si es creen més de tres formats condicionals per a un sol interval.
  • Per aplicar més de tres formats condicionals a un interval mitjançant el mètode "Afegeix", podem utilitzar "Si" o "seleccionar cas".
  • Si el mètode "Afegeix" té el paràmetre "Tipus" com a: "xlExpression", el paràmetre "Operador" s'ignora.
  • Els paràmetres: "Fórmula 1" i "Fórmula 2" al mètode "Afegeix" poden ser una referència de cel·la, un valor constant, un valor de cadena o fins i tot una fórmula.
  • El paràmetre: "Fórmula 2" només s'utilitza quan el paràmetre: "Operador" és "xlBetween" o "xlNotBetween", en cas contrari s'ignora.
  • Per eliminar tot el format condicional de qualsevol full de càlcul, podem utilitzar el mètode "Suprimeix" de la següent manera:
Cells.FormatConditions.Delete