Ehdollinen muotoilu Excel VBA: ssa
Voimme soveltaa ehdollista muotoilua soluun tai solualueeseen Excelissä. Ehdollinen muoto on muoto, jota käytetään vain soluihin, jotka täyttävät tietyt ehdot, esimerkiksi tietyn arvon ylittävät arvot, positiiviset tai negatiiviset arvot tai tietyn kaavan arvot jne. Tämä ehdollinen muotoilu voidaan tehdä myös Excelin VBA-ohjelmoinnissa " Makroehtojen kokoelma " makrossa / menettelyssä.
Muotoehtoa käytetään kuvaamaan ehdollista muotoa, joka voidaan asettaa kutsumalla menetelmä, joka palauttaa kyseisen tyyppisen muuttujan. Se sisältää kaikki ehdolliset muodot yhdelle alueelle, ja siinä voi olla vain kolme muotoehtoa.
FormatConditions.Add / Modify / Delete käytetään VBA: ssa FormatCondition-objektien lisäämiseen / muokkaamiseen / poistamiseen kokoelmaan. Kutakin muotoa edustaa FormatCondition-objekti. FormatConditions on Range-objektin ominaisuus, ja Lisää seuraavat parametrit alla olevalla syntaksilla:
FormatConditions.Add (tyyppi, operaattori, kaava1, kaava2)
Lisää kaavan syntaksissa on seuraavat argumentit:
- Tyyppi: Pakollinen, edustaa, jos ehdollinen muoto perustuu solussa olevaan arvoon tai lausekkeeseen.
- Operaattori: Valinnainen, edustaa operaattoria, jota käytetään arvolla, kun 'Type' perustuu soluarvoon.
- Kaava1: Valinnainen, edustaa ehdolliseen muotoon liittyvää arvoa tai lauseketta.
- Kaava2: Valinnainen, edustaa ehdollisen muodon toiseen osaan liittyvää arvoa tai lauseketta, kun parametri: 'Operaattori' on joko 'xlBetween' tai 'xlNotBetween'.
FormatConditions.Modify-sovelluksella on myös sama syntaksit kuin FormatConditions.Add-tiedostolla.
Seuraavassa on luettelo joistakin arvoista / luetteloista, jotka voidaan ottaa joillakin parametreillä 'Lisää' / 'Muokkaa':

Esimerkkejä VBA: n ehdollisesta muotoilusta
Alla on esimerkkejä ehdollisesta muotoilusta Excel VBA: ssa.
Esimerkki 1
Sanotaan, että meillä on Excel-tiedosto, joka sisältää joidenkin opiskelijoiden nimet ja merkinnät, ja haluamme määrittää / korostaa merkit lihavoituna ja sinisenä, joka on yli 80, ja lihavoituna ja punaisena, joka on vähemmän kuin 50. Katsotaanpa tiedostossa olevat tiedot:

Käytämme FormatConditions.Lisää funktio alla kuvatulla tavalla tämän saavuttamiseksi:
- Siirry kohtaan Kehittäjä -> Visual Basic Editor:

- Napsauta hiiren kakkospainikkeella työkirjan nimeä Project-VBAProject-ruudussa-> Lisää- - Moduuli.

- Kirjoita nyt koodi / menettely tähän moduuliin:
Koodi:
Alamuotoilu () End Sub

- Määritä muuttuja rng, condition1, condition2:
Koodi:
Alamuotoilu () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition End Sub

- Aseta / korjaa alue, jolle ehdollinen muotoilu on toivottava, käyttämällä VBA 'Range' -toimintoa:
Koodi:
Alamuotoilu () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") End Sub

- Poista / tyhjennä kaikki olemassa olevat ehdolliset muotoilut alueelta käyttämällä 'FormatConditions.Delete':
Koodi:
Alamuotoilu () Hämärä rng Alueena Hämärä ehto1 As FormatCondition, ehto2 As FormatCondition Aseta rng = Alue ("B2", "B11") rng.FormatConditions.Delete End Sub

- Määritä ja aseta nyt ehdot jokaiselle ehdolliselle muodolle käyttämällä 'FormatConditions.Add':
Koodi:
Alamuotoilu () 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 ") Aseta ehto2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") End Sub

- Määritä ja aseta kullekin ehdolle käytettävä muoto

Kopioi ja liitä tämä koodi VBA-luokan moduuliin.
Koodi:
Alamuotoilu () 'Muuttujien määrittely: Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition' Korjaamalla / asettamalla alue, jolle ehdollinen muotoilu halutaan Aseta rng = Alue ("B2", "B11") ' poista / tyhjennä kaikki olemassa olevat ehdolliset muotoilut alueelta rng.FormatConditions.Delete 'Kunkin ehdollisen muodon ehtojen määrittäminen ja asettaminen Aseta ehto1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80") Aseta ehto2 = rng.FormatConditions. Lisää (xlCellValue, xlLess, "= 50") 'Kullekin ehdolle sovellettavan muodon määritteleminen ja asettaminen With condition1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font. Lihavoitu = True End With End Sub
Nyt kun suoritamme tämän koodin F5-näppäimellä tai manuaalisesti, näemme, että alle 50 merkit korostetaan lihavoituna ja punaisena, kun taas yli 80 merkit korostetaan lihavoituna ja sinisenä seuraavasti:

Esimerkki 2
Sanotaan, että yllä olevassa esimerkissä meillä on toinen sarake, jossa todetaan myös, että opiskelija on "Topper", jos hän saa yli 80 pistettä, muuten heitä vastaan kirjoitettu Hyväksytty / hylätty. Nyt haluamme tuoda esiin arvot, jotka on merkitty nimellä "Topper" lihavoituna ja sinisenä. Katsotaanpa tiedostossa olevat tiedot:

Tässä tapauksessa koodi / menettely toimisi seuraavasti:
Koodi:
Alitekstin muotoilu () Loppu alaviesti

Määritä ja aseta kullekin ehdolle käytettävä muoto
Koodi:
Sub TextFormatting () Range ("c2: c11"). FormatConditions.Add (xlTextString, TextOperator: = xlContains, String: = "topper") With .Font .Bold = True .Color = vbBlue Loppu loppuun End Sub

Näemme yllä olevasta koodista, että haluamme testata, onko alue: 'C2: C11' merkkijono: "Topper", joten parametrin "Onamestor" muodossa "Format.Add" vie luettelo: "Xcontains" testaa tämä ehto kiinteällä alueella (ts. C2: C11) ja tee sitten vaadittu ehdollinen muotoilu (kirjasimen muutokset) tällä alueella.
Nyt kun suoritamme tämän koodin manuaalisesti tai painamalla F5-näppäintä, näemme, että solun arvot 'Topper' korostetaan sinisellä ja lihavoidulla:

Below are some other instances/criteria that can be used to test and thus apply VBA conditional formatting on:
- Format by Time Period
- Average condition
- Colour Scale condition
- IconSet condition
- Databar condition
- Unique Values
- Duplicate Values
- Top10 values
- Percentile Condition
- Blanks Condition, etc.
With different conditions to be tested, different values/enumeration are taken by parameters of ‘Add.’
Things to Remember About VBA Conditional Formatting
- ‘Add’ method with ‘FormatConditions’ is used to create a new conditional format, ’Delete’ method to delete any conditional format, and ‘Modify’ method to alter any existing conditional format.
- The ‘Add’ method with ‘FormatConditions Collection’ fails if more than three conditional formats are created for a single range.
- Jos haluat käyttää useampaa kuin kolmea ehdollista muotoa alueella käyttämällä Lisää-menetelmää, voimme käyttää 'Jos' tai 'Valitse kirjainkoko'.
- Jos 'Lisää' -menetelmän tyypin parametri on 'xlExpression', parametria 'Operaattori' ei oteta huomioon.
- Parametrit: Kaava1 ja Kaava2 Add-menetelmässä voivat olla soluviite, vakioarvo, merkkijonoarvo tai jopa kaava.
- Parametria: 'Formula2' käytetään vain, kun parametri: 'Operator' on joko 'xlBetween' tai 'xlNotBetween', muuten se jätetään huomiotta.
- Jos haluat poistaa kaikki ehdolliset muotoilut mistä tahansa laskentataulukosta, voimme käyttää Poista-menetelmää seuraavasti:
Solut.FormatConditions.Poista