Laten we een schilderij van Monalisa schilderen en Picasso achterlaten met VBA. Klaar, klaar…
Wacht! Wacht! Rustig aan. We gaan gewoon VBA gebruiken om voorwaardelijke opmaak te doen en het is gemakkelijker dan een schilderij dat? gevormde vogel.
De algemene syntaxis van VBA voorwaardelijke opmaak
Als de conditie dan Range(range).Interior.ColorIndex= 1-56
Geef uw conditiecontrole bij de voorwaarde en formatteer vervolgens uw bereik met de eigenschap .iteriour.colorindex van het Range-object. De kleurindex heeft 56 kleuren. Ga Holi met ze spelen en ontdek welk nummer welke kleur bevat.
Laten we het nu begrijpen met een voorbeeld
Voorbeeld: VBA-code om cellen voorwaardelijk op te maken
Dus dit is het scenario, we hebben een lijst van willekeurige mensen met hun leeftijd en leeftijdsgroep.
Hoe gemakkelijk zou het zijn om de leeftijdsgroep een persoon te vertellen door alleen maar naar hun naam te kijken.
Om dit te doen, wil ik VBA-formaat Naam ROOD als hij een volwassene is, GEEL als hij een tiener is en GROEN als hij een KIND is en niets als de cel leeg is.
Sub FormatUsingVBA() Dim rng As Range Dim lastRow As Long lastRow = Cells(Rows.Count, 3)).End(xlUp).Rij Set rng = Range("C2:C" & lastRow)Voor elke cel In rng If-cel. Waarde2 = "Volwassen" Dan Bereik(cel.Adres).Offset(0, -2).Interior.ColorIndex = 3 ElseIf cel.Waarde2 = "KID" Dan Bereik(cel.Adres).Offset(0, -2). Interior.ColorIndex = 4 ElseIf cell.Value2 = "Tiener" Dan Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 6 Else Range(cell.Address).Offset(0, -2). Interior.ColorIndex = 0 End If Next cel End Sub
Om deze code rechtstreeks vanaf het blad uit te voeren, heb ik een knop op hetzelfde blad getekend en deze macro eraan toegewezen. Wanneer u nu op de knop "Formatteren" klikt, wordt uw code uitgevoerd en worden naamcellen bijgewerkt met kleur, afhankelijk van hun leeftijdsgroep. Hoe? Laten we het uitzoeken.
Code Verklaring:
Dim rng As RangeDim lastRow As Long Deze twee regels zijn variabele declaraties. rng voor bereik dat de leeftijdsgroep bevat en laatste rij om het laatste niet-lege rijnummer te krijgen.
lastRow = Cells(Rows.Count, 3)).End(xlUp).RowDeze regel retourneert het laatste rijnummer in de lastRow-variabele.
Set rng = Range("C2:C" & lastRow)Deze regel stelt het bereik in vanaf C2 tot de laatste rij. Het maakt je code dynamisch. U voegt nieuwe rijen toe aan uw gegevens en het zal detecteren en opslaan in een nieuw bereik in de rng-variabele.
Voor elke cel In rng Als cel.Waarde2 = "Volwassen" Dan Bereik(cel.Adres).Offset(0, -2).Interior.ColorIndex = 3 ElseIf cel.Waarde2 = "KID" Dan Bereik(cel.Adres). Offset (0) Offset (0, -2).Interior.ColorIndex = 0 End If Next cel
Dit is het hoofdsegment.
Voor elke cel In rng
De eerste regel voert de lus uit naar alle cellen in uw bereik. Als cell.Value2 = "Volwassen" Dan
De volgende regel is een conditiecontrole. Het controleert of de huidige celwaarde Volwassen is of niet.
Zo ja, dan wordt de volgende regel uitgevoerd, anders springt het naar de volgende if-instructie.Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 3
Als de IF-voorwaarde nu TRUE retourneert, stelt deze regel de celkleur in op ColorIndex 3 die voor ROOD is.
Op dezelfde manier worden de volgende IF-instructies uitgevoerd en wordt actie ondernomen zoals gespecificeerd.
Dus ja, je kunt bereiken voorwaardelijk opmaken met VBA. De interne methode van het Range-object regelt vele andere eigenschappen voor opmaak. Je moet ermee spelen, het kan geen kwaad maar je leert er zeker van. En als je een probleem hebt dan waarvoor ik hier ben. Stel uw vragen in het opmerkingengedeelte.
Download bestand
Voorwaardelijke opmaak met VBA in Microsoft ExcelPopulaire artikels:
50 Excel-snelkoppelingen om uw productiviteit te verhogen
Hoe de VERT.ZOEKEN-functie in Excel te gebruiken?
Hoe de AANTAL.ALS-functie in Excel te gebruiken?
Hoe de SUMIF-functie in Excel te gebruiken?