根据存储在其他单元格中的RGB值dynamic更改单元格的背景颜色

我想在Excel中写一个函数,根据存储在其他三个单元格中的值设置活动单元格的背景颜色(这三个单元格中的每一个存储的数值都是从0到255,取决于颜色R, G或B)。

所以A1单元是150,B1单元是220,C1单元是90(即RGB(150,220,90))。 我需要D1单元格的颜色是之前宣布的RGB(某种绿色),而且,如果我将函数放在D2中,它将select存储在A2,B2和C2中的RGB,等等…

这可以实现吗?

D1中input:

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

并在工作表代码区域中input以下事件macros:

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

在这里输入图像说明

UDF版本:

 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 Function Sub ChangeIt(sht, c, clr As Long) ThisWorkbook.Sheets(sht).Range(c).Interior.Color = clr End Sub 

用法(在D1中input):

 =myRGB(A1,B1,C1) 

假设你想要这个工作与整个列,而不是第1行,这里是工作表的代码模块的VBA过程:

 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 With End Sub 

注意:下面我不知道你的意思,所以没有说明它and also, if I place the function in D2, it will select the RGB stored in A2, B2 and C2