【问题标题】:How to transform cell string value RGB into color number in Excel VBA?如何将单元格字符串值 RGB 转换为 Excel VBA 中的颜色数?
【发布时间】:2017-10-16 20:04:45
【问题描述】:

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

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

【问题讨论】:

    标签: vba excel colors


    【解决方案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    
    

    【讨论】:

    • 只是想补充一点,您实际上可以使用Application.Evaluate[SUM(5,1)] 来评估代码 - 不幸的是,没有 RGB 公式,尽管您可以通过创建自定义函数来解决这个问题,虽然我相信你最终还是不得不拆分它,所以不幸的是你没有保存任何东西。你真正想要做的是[RGB(100,100,100)],不幸的是它不起作用,因为 RGB 是一个 VBA 函数。我实际上是在玩这个概念 atm。
    • @matteo 你少了一个括号,但它可以工作,谢谢Sheets("Sheet3").Cells(j, 4).Interior.color = RGB(Replace(Split(color, ",")(0), "RGB(", ""), Split(color, ",")(1), Replace(Split(color, ",")(2), ")", ""))
    • @user1274820 不幸的是,应用程序的“评估”方法无法评估代码变量,只能评估电子表格函数。
    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2019-01-01
    • 1970-01-01
    • 2012-05-01
    相关资源
    最近更新 更多