vba - 在 Excel 2013 中根据单元格的十六进制值填充颜色

标签 vba excel hex rgb

我有一个电子表格,其中 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/

相关文章:

Excel VBA,如何根据列中的数据选择行?

c# - 有效地获取格式化的单元格值

excel - 对非连续单元格的平均公式使用 (r, c) 格式

excel - 具有多个条件的 Vlookup,返回的数组插入到 ComboBox

c# - 如何将格式 00-00 的十六进制转换为 double ?

java - 十六进制的枚举类型使用 Java 返回错误的值?

excel - 将 Word 文档中的数据提取到 Excel 电子表格

excel - 如何忽略图表中的非数字单元格?

vba - 使用 VBA 刷新表

iphone - 在 Objective C (cocoa) 中将十六进制数据字符串转换为 NSData