我有一个电子表格,其中 A 列中的单元格包含十六进制格式的颜色。是否可以使用与十六进制值匹配的颜色自动填充相邻单元格?
根据迄今为止所做的研究,我了解到 VBA 应首先将 HEX 字符串转换为其 RGB 对应项,然后用结果填充单元格颜色。
例如:如果 A1 包含值“7fcac3”(或“#7fcac3”,但我认为不需要磅),VBA 应使用 RGB (127,202,195) 填充相邻的 B 单元格。
下面是 VBA 的外观示例,位于 (here) 。问题是我在 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
非常感谢, 马蒂厄
最佳答案
第一行代码:
For i = 1 To LastRow
不在 Sub 或 Function 内部。看起来这是您在 Sub SetHexColors 中已有的一行的副本,所以我希望您只需要注释掉或删除第一行。您可以放在 Subs 和 Functions 之外的唯一代码行是变量声明和 Option 语句之类的内容(例如 Option Explicit)
关于vba - 在 Excel 2013 中根据单元格的十六进制值填充颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743199/