如何在Excel VBA中将单元格字符串值RGB转换为颜色数?
我有包含颜色值的单元格,即: RGB0,128,0 正在尝试在VBA中使用此cell.value为我的单元格着色,但无法识别我的颜色。它显示为字符串,不起作用如何在Excel VBA中将单元格字符串值RGB转换为颜色数?,vba,excel,colors,Vba,Excel,Colors,我有包含颜色值的单元格,即: RGB0,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").
"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),")","")
如果在单元格中始终写入RGB0、10、20等相同的模式,可以考虑创建一个自定义函数,返回三个数字:
Private Function splitRGB(ByVal vl As String) As Integer()
splitRGB = yourArrayWithTheThreeValues '(split as above)
End Function
只是想补充一点,您可以使用Application.evaluate或[SUM5,1]实际计算代码-不幸的是,没有RGB公式,尽管您可以通过创建自定义函数来解决这一问题,但我相信您最终将不得不拆分它,因此很遗憾,您没有保存任何内容。您真正想要做的是[RGB100100100],不幸的是,它不能工作,因为RGB是VBA函数。我实际上是在玩这个概念。@matteo您缺少一个括号,但它可以工作,谢谢SheetsSheet3.Cellsj,4.Interior.color=RGBReplaceSplitcolor,0,RGB,Splitcolor,1,replaceSpiltcolor,2,@user1274820不幸的是,应用程序的Evaluate方法不能计算代码变量,只能计算电子表格函数。