如何在Excel VBA中将单元格字符串值RGB转换为颜色编号?

时间:2017-10-16 20:04:45

标签: excel vba excel-vba colors

我有包含颜色值的单元格,即:

RGB(0, 128, 0)

尝试在VBA中使用此cell.value为我的单元格着色,但我的颜色无法识别。它显示为字符串,但不起作用

"RGB(0, 128, 0)"

如何转换此文本或删除“”以便我的颜色功能正常工作?

While Not Worksheets("Sheet3").Range("A" & j).Value = ""
    color = Sheets("Sheet3").Cells(j, 2).Value
    Sheets("Sheet3").Cells(j, 4).Interior.color = color
    j = j + 1
Wend

1 个答案:

答案 0 :(得分:1)

您不能将字符串解释为代码变量/函数。

换句话说,你不能期望用字符串写这个:

str = "a = a + 2"

...并期望您的代码将其读作:

a = a + 2

但是,您可以做的是从字符串中拆分三个数字并在代码中使用它们:

color = Sheets("Sheet3").Cells(j, 2).Value
Sheets("Sheet3").Cells(j,4).Interior.Color = RGB(Replace(Split(color,",")(0),"RGB(",""), Split(color,",")(1), Replace(Split(color,",")(2),")","")

如果你总是有相同的模式(比如在单元格中写的RGB(0,10,20)),你可以考虑创建一个返回三个数字的自定义函数:

Private Function splitRGB(ByVal vl As String) As Integer()
    splitRGB = yourArrayWithTheThreeValues '(split as above)
End Function