根据单元格中的十六进制值设置自动颜色背景?

rom*_*ain 5 excel hex vba background-color

我已经发现它可以在向单元格的条件格式规则添加规则时手动完成:但是,当我在单元格上写入十六进制值时,我希望所有 16,000,000 个十六进制值颜色自动出现,因此“手动”添加这 16,000,000 个十六进制值听起来有点太多了!没有办法让所有 16,000,000 种颜色的阴影自动进入并根据单元格中的十六进制值将背景颜色应用于单元格吗?

换句话说,当我在单元格中键入 0000ff 时,我试图获得蓝色背景,然后当单元格的 HEX 值更改时,我希望背景更改为相应的颜色 => 输入 ff0000 时 BGC 更改为红色,然后在 00ff00 时为绿色,在 ffffff 时为白色……等等,对于 16,000,000 及以上的颜色是可能的。

小智 13

将十六进制转换为RGBWorksheet_Change事件宏应该很容易做到这一点。工作表的HEX2DEC 函数应该能够处理转换。

右键单击工作表的名称选项卡,然后选择View Code。当 VBE 打开时,将以下内容粘贴到名为 Book1 - Sheet1 (Code) 的代码表中。

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo bm_Safe_Exit
    Application.EnableEvents = False
    Dim rng As Range, clr As String
    For Each rng In Target
        If Len(rng.Value2) = 6 Then
            clr = rng.Value2
            rng.Interior.Color = _
              RGB(Application.Hex2Dec(Left(clr, 2)), _
                  Application.Hex2Dec(Mid(clr, 3, 2)), _
                  Application.Hex2Dec(Right(clr, 2)))
        End If
    Next rng

bm_Safe_Exit:
    Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)

点击Alt+Q返回到您的工作表。在单元格中键入任何 6 个字符的十六进制代码以提供背景颜色。

        十六进制颜色填充


小智 5

在我看来,第一个答案非常好。我对 VBA 不太出名:) 但为了避免一些问题,最好以 # 开头十六进制数字,并检查第一个符号是否为 #,因为我们控制了一个范围,正如我所见。然后控制value的全长等于7个符号,然后计算一个颜色来设置背景。

干杯!

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo bm_Safe_Exit
    Application.EnableEvents = False
    Dim rng As Range, clr As String
    For Each rng In Target
        If Left(rng.Value2, 1) = "#" And Len(rng.Value2) = 7 Then
            clr = Right(rng.Value2, 6)
            rng.Interior.Color = _
              RGB(Application.Hex2Dec(Left(clr, 2)), _
                  Application.Hex2Dec(Mid(clr, 3, 2)), _
                  Application.Hex2Dec(Right(clr, 2)))
        End If
    Next rng

bm_Safe_Exit:
    Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)