Kaip atlikti sąlyginį formatavimą naudojant „Microsoft Excel“ naudojant VBA

Anonim

Nusipieškime Monalisa paveikslą ir palikime Picasso, naudodamiesi VBA. Pasiruošę, pasiruoškite…

Laukti! Laukti! Stabdyk arklius. Mes tik ketiname naudoti VBA sąlyginiam formatavimui ir tai lengviau nei tapyba? formos paukštis.

Bendroji VBA sąlyginio formatavimo sintaksė

Jei sąlyga nei diapazonas (diapazonas). Interjeras.ColorIndex = 1-56

Patikrinkite savo būklės būklę ir suformatuokite diapazoną naudodami objekto diapazono ypatybę .iteriour.colorindex. Spalvų indeksą sudaro 56 spalvos. Eik su jais žaisti „Holi“ ir tyrinėk, kuris skaičius turi kokią spalvą.
Dabar supraskime tai pavyzdžiu

Pavyzdys: VBA kodas, norint sąlygiškai formatuoti langelius

Taigi, toks scenarijus, mes turime atsitiktinių žmonių sąrašą pagal jų amžių ir amžiaus grupę.
Kaip būtų lengva, jei galėtumėte pasakyti amžiaus grupei žmogų, tiesiog žiūrėdami į jų vardus.
Dabar norėčiau tai padaryti, noriu VBA formato Pavadinimas RAUDONAS, jei jis yra suaugęs, GELTONAS, jei jis yra paauglys, ir ŽALIAS, jei jis yra VAIKAS, ir nieko, jei langelis tuščias.

Sub FormatUsingVBA () Dim rng kaip diapazonas Dim lastRow As Long lastRow = Ląstelės (Rows.Count, 3). End (xlUp) .Row Set rng = Range ("C2: C" & lastRow) Kiekvienai langai In rng If ląstelė. Reikšmė2 = "Suaugusieji" Tada diapazonas (ląstelė.Address) .Poiris (0, -2) .Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Tada diapazonas (ląstelė.Address) .Perkėlimas (0, -2). Interior.ColorIndex = 4 ElseIf cell.Value2 = "Paauglys" Tada diapazonas (ląstelė.Address). Nuokrypis (0, -2) .Interior.ColorIndex = 6 Kitas diapazonas (ląstelė.Address) .Paslinkimas (0, -2). Interior.ColorIndex = 0 Pabaiga, jei kitas langelis Pabaiga

Norėdami paleisti šį kodą tiesiai iš lapo, aš nupiešiau mygtuką tame pačiame lape ir priskyriau jam šią makrokomandą. Dabar, kai spustelėsite mygtuką „Formatuoti“, jūsų kodas bus paleistas ir atnaujins pavadinimo langelius spalva, atsižvelgiant į jų amžiaus grupę. Kaip? Išsiaiškinkime.

Kodo paaiškinimas:

Dim rng As RangeDim lastRow as Long Šios dvi eilutės yra kintamos deklaracijos. rng diapazonui, kuriame yra amžiaus grupė, ir lastRow, kad gautumėte paskutinį tuščią eilutės numerį. 
lastRow = ląstelės (Rows.Count, 3). End (xlUp). RowThis eilutė grąžina paskutinės eilutės numerį lastRow kintamajame.
Nustatyti rng = Diapazonas („C2: C“ ir paskutinė eilutė) Šioje eilutėje nustatomas diapazonas nuo C2 iki paskutinės eilutės. Tai daro jūsų kodą dinamišką. Pridėsite naujų eilučių prie savo duomenų ir jis aptiks ir išsaugos naujame rng kintamojo diapazone.
Kiekvienai langeliui In rng Jei ląstelė.Vertė2 = "Suaugusieji" Tada diapazonas (ląstelė.Address) .Nukreipimas (0, -2) .Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Tada diapazonas (cell.Address). Poslinkis (0, -2) .Interior.ColorIndex = 4 ElseIf cell.Value2 = "Paauglys" Tada diapazonas (ląstelė.Address) .Pakreipimas (0, -2) .Interior.ColorIndex = 6 Kitas diapazonas (ląstelė.Address). Poslinkis (0, -2). Interior.ColorIndex = 0 End If Next langelis 

Tai yra pagrindinis segmentas.

Kiekvienai langeliui In rng 

Pirmoji eilutė paleidžia kilpą į visas jūsų diapazono ląsteles. Jei ląstelė.Vertė2 = "Suaugęs" Tada
Kita eilutė yra būklės patikrinimas. Jis patikrina, ar dabartinė langelio vertė yra suaugusi, ar ne.
Jei taip, tada eina kita eilutė, kitaip ji pereina į kitą, jei teiginys. Range (cell.Address). Offset (0, -2). Interior.ColorIndex = 3
Dabar, jei IF sąlyga grąžina TRUE, ši eilutė nustato ląstelių spalvą į ColorIndex 3, kuri yra RED.

Panašiai paleidžiami ir IF veiksmai, kaip nurodyta.

Taigi taip, galite sąlygiškai formatuoti diapazonus naudodami VBA. „Range“ objekto interjero metodas valdo daugelį kitų formatavimo savybių. Turėtumėte žaisti su jais, tai nepakenks, bet tikrai išmoksite. Ir jei jūs susidursite su sunkumais, nei aš čia. Užduokite savo klausimus komentarų skiltyje.

Atsisiųsti failą

Sąlyginis formatavimas naudojant VBA „Microsoft Excel“

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti

Kaip naudotis „VLOOKUP“ funkcija „Excel“

Kaip naudoti funkciją „COUNTIF“ programoje „Excel“

Kaip naudotis „SUMIF“ funkcija „Excel“