Vba 根据颜色填充单元格';Excel 2013中的s十六进制值

Vba 根据颜色填充单元格';Excel 2013中的s十六进制值,vba,excel,hex,rgb,Vba,Excel,Hex,Rgb,我有一个电子表格,a列中的单元格包含十六进制格式的颜色。是否可以用与十六进制值匹配的颜色自动填充相邻单元格 从目前为止所做的研究中,我了解到VBA应该首先将十六进制字符串转换为对应的RGB,然后用结果填充单元格颜色 例如:如果A1包含值“7fcac3”(或“#7fcac3”,但我认为不需要英镑),则VBA应使用RGB(127202195)填充相邻的B单元格 下面是一个VBA的外观示例。问题是我在Excel 2013中遇到了一个“编译错误:无效的外部过程”错误 For i = 1 To LastR

我有一个电子表格,a列中的单元格包含十六进制格式的颜色。是否可以用与十六进制值匹配的颜色自动填充相邻单元格

从目前为止所做的研究中,我了解到VBA应该首先将十六进制字符串转换为对应的RGB,然后用结果填充单元格颜色

例如:如果A1包含值“7fcac3”(或“#7fcac3”,但我认为不需要英镑),则VBA应使用RGB(127202195)填充相邻的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 
非常感谢,,
马修

第一行代码:

For i = 1 To LastRow

不在子对象或函数的内部。看起来这是子集合hexcolors中已有的一行的副本,所以我希望您只需要注释掉或删除第一行。唯一可以放在sub和函数外部的代码行是变量声明和类似Option语句的东西(例如Option Explicit)

现在,从作者的说明中也可以明显看出这一点,感谢您指出:)在我删除第一行并添加If语句以忽略中间的空白行之后,效果非常好。如果单元格(i,“A”).Value“”则单元格(i,“B”).Interior.Color=HEXCOL2RGB(单元格(i,“A”))结束,如果