在Excel 2013中,根据HEX值为单元格填充颜色。

7
我有一个电子表格,A列中的单元格包含十六进制颜色。是否可以自动填充相邻单元格以匹配HEX值的颜色?
从目前的研究来看,我了解到VBA首先应将HEX字符串转换为其RGB对应项,然后使用结果填充单元格颜色。
例如:如果A1包含值“7fcac3”(或“#7fcac3”,但我认为不需要井号),则VBA应使用RGB(127,202,195)填充相邻的B单元格。
以下是VBA的示例,找到(此处)。问题是我在Excel 2013中遇到“编译错误:无效的程序外部”错误。
For i = 1 To LastRow

Sub SetHexColors()
Dim i, LastRow
LastRow = Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To LastRow
Cells(i, "B").Interior.Color = HEXCOL2RGB(Cells(i, "A"))
Next
End Sub

Public 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 

许多感谢, 马修

1
在我删除了第一行并添加了一个If语句来忽略中间的空行后,它运行得非常好。如果单元格(i, "A").Value <> "",那么 单元格(i, "B").Interior.Color = HEXCOL2RGB(单元格(i, "A")) 结束 如果 - trax-cio
1个回答

3
第一行代码:
For i = 1 To LastRow

这段代码不在 Sub 或 Function 的内部。看起来这是已经存在于 Sub SetHexColors 中的一行代码的复制,所以您只需要注释或删除该行的第一行即可。唯一可以放在 Sub 和 Function 之外的代码行是变量声明和诸如Option语句(例如,Option Explicit)之类的内容。


现在从作者的说明中已经很明显了,感谢您指出 :) - Mathieu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接