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

问题描述:

我有一个包含颜色值,即:如何在Excel VBA中将单元格字符串值RGB转换为颜色编号?

RGB(0, 128, 0)

尝试使用此cell.value在VBA上色我的细胞的细胞,但我的颜色不被认可。它显示为字符串,它不起作用

"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 

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

换句话说,你不能指望在一个字符串来写:

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  
+0

只是想补充一点,你可以使用'Application.Evaluate'或者,例如实际评估代码,' [SUM(5,1)]' - 不幸的是,没有RGB公式,尽管你可以通过创建一个自定义函数来解决这个问题,尽管我相信你最终不得不分割它,所以你没有保存任何东西不幸。你真正想要做的是'[RGB(100,100,100)]',因为RGB是一种VBA功能,所以它不起作用。我实际上正在玩这个概念atm。 – user1274820

+1

@matteo你缺少一个支架,但它的工作原理,感谢'Sheets(“Sheet3”)。细胞(j,4).Interior.color = RGB(替换(拆分(颜色,“,”)(0),“RGB “拆分”(颜色,“,”)(1),替换(拆分(颜色,“,”)(2),“)”,“”))' – Michal

+0

@ user1274820不幸的是,“评估”的应用程序无法评估代码变量,但只能计算电子表格函数。 –