Change a cell's background color dynamically according to a RGB value stored in other cells Change a cell's background color dynamically according to a RGB value stored in other cells vba vba

Change a cell's background color dynamically according to a RGB value stored in other cells


UDF version:

Function myRGB(r, g, b)    Dim clr As Long, src As Range, sht As String, f, v    If IsEmpty(r) Or IsEmpty(g) Or IsEmpty(b) Then        clr = vbWhite    Else        clr = RGB(r, g, b)    End If    Set src = Application.ThisCell    sht = src.Parent.Name    f = "Changeit(""" & sht & """,""" & _                  src.Address(False, False) & """," & clr & ")"    src.Parent.Evaluate f    myRGB = ""End FunctionSub ChangeIt(sht, c, clr As Long)    ThisWorkbook.Sheets(sht).Range(c).Interior.Color = clrEnd Sub

Usage (entered in D1):

=myRGB(A1,B1,C1)


In D1 enter:

=A1 & "," & B1 & "," & C1

and in the worksheet code area, enter the following event macro:

Private Sub Worksheet_Calculate()   Range("D1").Interior.Color = RGB(Range("A1"), Range("B1"), Range("C1"))End Sub

enter image description here


Assuming you would want this to work with the entire columns instead of just row 1, here is the VBA procedure for the worksheet's code module:

Private Sub Worksheet_Change(ByVal Target As Range)    With Target        If .Count = 1 Then            If .Column < 4 Then                Cells(.Row, 4).Interior.Color = RGB(Cells(.Row, 1), Cells(.Row, 2), Cells(.Row, 3))            End If        End If    End WithEnd Sub

Note: I do not know what you mean by the following and so have not addressed it: and also, if I place the function in D2, it will select the RGB stored in A2, B2 and C2.