首页 > 解决方案 > VBA:不正确的颜色

问题描述

我想在 HTML 文件中使用单元格的背景颜色。因此,我需要颜色的十六进制代码。我使用以下代码来获取背景颜色的 HEX 代码。

MsgBox (ActiveCell.Interior.Color)
MsgBox Right("000000" & Hex(ActiveCell.Interior.Color), 6)

第一行返回 2303331,第二行返回 232563。我尝试在两个不同的网站上将 2303331 转换为 HEX 数字。两者都给出了#232563。我还尝试了反向转换,将#232563 转换为十进制,得到了 2303331。所以,数字没问题。

然后我在两个不同的网站上输入 #232563 以查看颜色是否与我的 Excel 表上的颜色匹配。不,它不匹配。#232563 是蓝色,而我的颜色是棕色,类似于 #450000。

我不知道如何获取单元格背景的十六进制代码。

在此处输入图像描述

标签: excelvbacolors

解决方案


您必须反转 Hex 获得的字符串:

Sub testHexColor()
 Dim hexStringCol As String
  MsgBox (ActiveCell.Interior.Color)
  hexStringCol = Right("000000" & Hex(ActiveCell.Interior.Color), 6)
  Debug.Print hexStringCol
  hexStringCol = "#" & Right(hexStringCol, 2) & Mid(hexStringCol, 3, 2) & left(hexStringCol, 2)
  Debug.Print hexStringCol 'this is the correct one
End Sub

您可以测试它从获得的 Hex 字符串中提取 RGB 并为相邻单元格着色:

ActiveCell.Offset(0, 1).Interior.Color = HEXCOL2RGB(hexStringCol)

并使用下一个转换函数:

Private Function HEXCOL2RGB(ByVal HexColor As String) As String
 Dim Red As String, Green As String, Blue As String
 HexColor = Replace(HexColor, "#", "")
  Red = val("&H" & Mid(HexColor, 1, 2))
  Green = val("&H" & Mid(HexColor, 3, 2))
  Blue = val("&H" & Mid(HexColor, 5, 2))
  HEXCOL2RGB = RGB(Red, Green, Blue)
End Function

推荐阅读