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“