Sąlyginis VBA formatavimas | Taikykite sąlyginį formatą naudodami „VBA Excel“

Sąlyginis formatavimas „Excel VBA“

„Excel“ langelyje ar langelių diapazone galime taikyti sąlyginį formatavimą. Sąlyginis formatas yra formatas, kuris taikomas tik tiems langeliams, kurie atitinka tam tikrus kriterijus, pvz., Reikšmes, viršijančias tam tikrą vertę, teigiamas ar neigiamas reikšmes arba reikšmes su tam tikra formule ir pan. Šis sąlyginis formatavimas taip pat gali būti atliekamas programuojant „Excel“ VBA naudojant „ Formato sąlygų rinkimas “ makrokomandoje / procedūroje.

Formato sąlyga naudojama norint parodyti sąlyginį formatą, kurį galima nustatyti iškviečiant metodą, kuris pateikia tokio tipo kintamąjį. Jame yra visi sąlyginiai vieno diapazono formatai ir jame gali būti tik trys formato sąlygos.

FormatConditions.Add / Modify / Delete yra naudojamas VBA norint pridėti / modifikuoti / ištrinti FormatCondition objektus prie kolekcijos. Kiekvieną formatą vaizduoja „FormatCondition“ objektas. „FormatConditions“ yra objekto „Range“ ypatybė, o „ Add“ turi šiuos parametrus su žemiau esančia sintakse:

FormatConditions.Add (Tipas, Operatorius, Formulė1, Formulė2) 

Sintaksės „Pridėti formulę“ argumentai yra šie:

  • Tipas: būtinas, nurodo, jei sąlyginis formatas yra pagrįstas langelyje esančia verte arba išraiška
  • Operatorius: Pasirenkama, nurodo operatorių, kuris turi būti naudojamas su verte, kai „Tipas“ yra pagrįstas langelio verte
  • 1 formulė: neprivaloma, reiškia vertę arba išraišką, susietą su sąlyginiu formatu.
  • 2 formulė: neprivaloma, reiškia reikšmę arba išraišką, susietą su antrąja sąlyginio formato dalimi, kai parametras: „Operatorius“ yra „xlBetween“ arba „xlNotBetween“.

FormatConditions.Modify taip pat turi tą pačią sintaksę kaip FormatConditions.Add.

Toliau pateikiamas kai kurių reikšmių / išvardijimų, kuriuos gali naudoti kai kurie parametrai „Pridėti“ / „Keisti“, sąrašas:

VBA sąlyginio formatavimo pavyzdžiai

Žemiau pateikiami sąlyginio formatavimo „Excel vba“ pavyzdžiai.

Šį VBA sąlyginio formatavimo šabloną galite atsisiųsti čia - VBA sąlyginio formatavimo šabloną

1 pavyzdys

Sakykime, kad turime „Excel“ failą, kuriame yra kai kurių mokinių vardai ir ženklai, ir norime nustatyti / paryškinti žymes kaip paryškintos ir mėlynos spalvos, kuri yra didesnė nei 80, ir kaip paryškintos ir raudonos spalvos, kuri yra mažesnė nei 50. Pažvelkime į failo duomenis:

Norėdami tai pasiekti, naudojame „FormatConditions.Add“ funkciją:

  • Eikite į kūrėją -> „Visual Basic“ redaktorius:

  • Dešiniuoju pelės mygtuku spustelėkite darbaknygės pavadinimą „Project-VBAProject“ srityje-> „Įterpti“ -> „Modulis“.

  • Dabar šiame modulyje parašykite kodą / procedūrą:

Kodas:

 Antrinis formatavimas () Pabaiga Sub 

  • Apibrėžkite kintamąjį rng, condition1, condition2:

Kodas:

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

  • Nustatykite / pataisykite diapazoną, kuriame norimas sąlyginis formatavimas, naudojant VBA „Range“ funkciją:

Kodas:

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

  • Ištrinkite / išvalykite esamą sąlyginį formatavimą (jei yra) iš diapazono naudodami „FormatConditions.Delete“:

Kodas:

 Papildomas formatavimas () „Dim rng“ kaip „Range Dim“ sąlyga1 kaip „FormatCondition“, sąlyga2 kaip „FormatCondition“ Nustatykite rng = diapazonas („B2“, „B11“) rng.FormatConditions.Delete End Sub

  • Dabar apibrėžkite ir nustatykite kiekvieno sąlyginio formato kriterijus naudodami „FormatConditions.Add“:

Kodas:

 Papildomas formatavimas () 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 ") Nustatykite sąlygą2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") Pabaiga 

  • Apibrėžkite ir nustatykite formatą, kuris bus taikomas kiekvienai sąlygai

Nukopijuokite ir įklijuokite šį kodą į savo VBA klasės modulį.

Kodas:

Papildomas formatavimas () 'Kintamųjų apibrėžimas: Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition' Taisyti / nustatyti diapazoną, kuriame norimas sąlyginis formatavimas Nustatyti rng = Range ("B2", "B11") 'Į ištrinkite / išvalykite esamą sąlyginį formatavimą iš diapazono rng.FormatConditions.Delete 'Kiekvieno sąlyginio formato kriterijų nustatymas ir nustatymas Nustatykite sąlygą1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80") Nustatykite sąlygą2 = rng.FormatConditions. Pridėti (xlCellValue, xlLess, "= 50") 'Kiekvienai sąlygai taikomo formato apibrėžimas ir nustatymas With condition1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font. Paryškintas = tikroji pabaiga su pabaigos sub

Dabar, kai paleidžiame šį kodą naudodami F5 klavišą arba rankiniu būdu, matome, kad ženklai, kurie yra mažesni nei 50, paryškinami paryškintai ir raudonai, o didesni nei 80 - paryškinti ir mėlynai paryškinti taip:

Pastaba: Kai kurios suformatuotų langelių, kurias galima naudoti su „FormatCondition“, išvaizda yra šios:

2 pavyzdys

Tarkime, kad aukščiau pateiktame pavyzdyje mes turime dar vieną stulpelį, kuriame taip pat teigiama, kad studentas yra „Topper“, jei jis / ji surenka daugiau nei 80 balų, priešingu atveju prieš juos parašoma „Pass / Fail“. Dabar norime pabrėžti vertybes, nurodytas kaip „Topper“, kaip „Bold and Blue“. Pažvelkime į failo duomenis:

Tokiu atveju kodas / procedūra veiktų taip:

Kodas:

 Sub TextFormatting () Pabaiga Sub 

Apibrėžkite ir nustatykite formatą, kuris bus taikomas kiekvienai sąlygai

Kodas:

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

Ankstesniame kode galime pamatyti, ar norime išbandyti, ar diapazone: „C2: C11“ yra eilutė: „Topper“, todėl parametro „Operator“ iš „Format.Add“ imamas sąrašas: „xlContains“, išbandyti šią sąlygą fiksuotame diapazone (ty C2: C11) ir tada atlikti reikiamą sąlyginį formatavimą (šrifto pakeitimus) šiame diapazone.

Dabar, kai paleidžiame šį kodą rankiniu būdu arba paspausdami klavišą F5, matome, kad langelio vertės su „Topper“ bus paryškintos mėlynai ir paryškintai:

Pastaba: Taigi, aukščiau pateiktuose dviejuose pavyzdžiuose matėme, kaip „Pridėti“ metodas veikia esant bet kokiam langelio vertės kriterijui (skaitinei ar tekstinei eilutei).

Toliau pateikiami keli kiti atvejai / kriterijai, kuriuos galima naudoti norint patikrinti ir tokiu būdu taikyti VBA sąlyginį formatavimą:

  • Formatas pagal laiko periodą
  • Vidutinė būklė
  • Spalvų skalės būklė
  • „IconSet“ sąlyga
  • Duomenų bazės būklė
  • Unikalios vertybės
  • Pasikartojančios vertybės
  • „Top10“ vertės
  • Procentinė būklė
  • Blankų būklė ir kt.

Esant skirtingoms bandomoms sąlygoms, pagal „Pridėti“ parametrus imamos skirtingos vertės ir skaičiavimai.

Įsimintini dalykai apie sąlyginį VBA formatavimą

  • Metodas „Pridėti“ su „FormatConditions“ naudojamas kuriant naują sąlyginį formatą, „Ištrinti“ metodas norint ištrinti bet kokį sąlyginį formatą ir „Keisti“ metodas norint pakeisti bet kurį esamą sąlyginį formatą.
  • Metodas „Pridėti“ su „FormatConditions Collection“ nepavyksta, jei vienam diapazonui sukurta daugiau nei trys sąlyginiai formatai.
  • Norėdami taikyti daugiau nei tris sąlyginius formatus diapazone, naudodami metodą „Pridėti“, galime naudoti „If“ arba „Select case“.
  • Jei metodo „Pridėti“ parametras „Tipas“ yra toks: „xLExpression“, parametras „Operatorius“ nepaisomas.
  • Parametrai: „Formulė1“ ir „Formulė2“ metoduose „Pridėti“ gali būti langelio nuoroda, pastovi vertė, eilutės vertė ar net formulė.
  • Parametras: „Formulė2“ naudojamas tik tada, kai parametras: „Operatorius“ yra „xlBetween“ arba „xlNotBetween“, kitaip jis nepaisomas.
  • Norėdami pašalinti visus sąlyginius formatavimus iš bet kurio darbalapio, galime naudoti metodą „Ištrinti“ taip:
Ląstelės. Formato sąlygos. Ištrinti

$config[zx-auto] not found$config[zx-overlay] not found