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

epa*_*ezr 8 excel vba colors cell

我试图写在Excel一个函数,将根据存储在其它三个小区中的值设置活动单元格的背景颜色(每个这三个细胞从0的数值存储到255,根据颜色R, G或B).

因此,A1单元格为150,B1单元格为220,C1单元格为90(即RGB(150,220,90)).我需要D1单元格的颜色是之前声明的RGB(某种绿色),而且,如果我将函数放在D2中,它将选择存储在A2,B2和C2中的RGB,依此类推......

这可以实现吗?

Tim*_*ams 16

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
Run Code Online (Sandbox Code Playgroud)

用法(在D1中输入):

=myRGB(A1,B1,C1)
Run Code Online (Sandbox Code Playgroud)


Gar*_*ent 5

D1中输入:

=A1 & "," & B1 & "," & C1
Run Code Online (Sandbox Code Playgroud)

在工作表代码区域中,输入以下事件宏:

Private Sub Worksheet_Calculate()
   Range("D1").Interior.Color = RGB(Range("A1"), Range("B1"), Range("C1"))
End Sub
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 这似乎不是很有用...使用硬编码范围 (3认同)