我有一个电子表格,其中A列中的单元格包含其十六进制格式的颜色。是否可以使用与十六进制值匹配的颜色自动填充相邻的单元格?
从到目前为止的研究中,我了解到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
非常感谢,Mathieu
第一行代码:
For i = 1 To LastRow
不在Sub或Function内部。看起来这是您在Sub SetHexColors中已经拥有的行的副本,因此我希望您只需要注释掉或删除第一行即可。您可以在Subs和Function之外放入的唯一代码行是变量声明和诸如Option语句之类的东西(例如Option Explicit)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句