如何在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
只是想补充一点,你可以使用'Application.Evaluate'或者,例如实际评估代码,' [SUM(5,1)]' - 不幸的是,没有RGB公式,尽管你可以通过创建一个自定义函数来解决这个问题,尽管我相信你最终不得不分割它,所以你没有保存任何东西不幸。你真正想要做的是'[RGB(100,100,100)]',因为RGB是一种VBA功能,所以它不起作用。我实际上正在玩这个概念atm。 – user1274820
@matteo你缺少一个支架,但它的工作原理,感谢'Sheets(“Sheet3”)。细胞(j,4).Interior.color = RGB(替换(拆分(颜色,“,”)(0),“RGB “拆分”(颜色,“,”)(1),替换(拆分(颜色,“,”)(2),“)”,“”))' – Michal
@ user1274820不幸的是,“评估”的应用程序无法评估代码变量,但只能计算电子表格函数。 –