Colorarea conditionata a celulelor in Excel cu Visual Basic Script
Ati lucrat vreodata in Excel? Vreun tabel pivotant la servici? Eu da, o gramada chiar. Dar pana ieri nu m-am bagat in scripting, mai exact Visual Basic pentru Excel. Chestia nu e foarte complicata, adica ce vreau eu sa fac e destul de simplu, macro-urile din Excel sunt foarte diverse si pot deveni extrem de complicate.
Iata ce vreau eu:

Casutele din coloana total (care insumeaza celelalte 2 coloane) sa isi schimbe culoarea fundalului in rosu in momentul in care valoarea este diferita de cifra din casuta D3 (total ore OCTOMBRIE 2008).

Pentru aceasta definim urmatoarea functie in Visual Basic Editor (ALT+F11):
Function ColorCells(ColorRng As String, ReferenceRng As String, Optional ColorValue As Integer = 3, Optional Recalc As Variant = False) Application.Volatile Recalc Dim cell As Range Dim ColoredCells As Range ' Ignore errors On Error Resume Next Set ColoredCells = Range(ColorRng) On Error GoTo 0 If Not ColoredCells Is Nothing Then For Each cell In ColoredCells If cell.Value <> Range(ReferenceRng).Value Then cell.Interior.COLORINDEX = ColorValue Else cell.Interior.COLORINDEX = xlNone End If Next cell End If End Function
Aceasta functie ColorCells trebuie definita in Module1(Code), iar apelarea ei se face la recalcularea formulelor din sheet (cu ajutorul evenimentului Worksheet_Calculate()) in Sheet1(Code).
Private Sub Worksheet_Calculate() Call ColorCells("D6:D9", "D3", 3) End Sub

Salveaza fisierul excel si testeaza modificand valorile din tabel.
Descarca fisierul colorcells.xls folosit ca exemplu.


