gpt4 book ai didi

vba - 将字符串转换为 RGB() 值的 Long

转载 作者:行者123 更新时间:2023-12-04 20:41:39 26 4
gpt4 key购买 nike

我正在编写一个宏来识别单元格的 RGB 值,然后将其作为参数传递给条件格式。唯一的问题是使用以下内容:

RGBcolor1 = "RGB(" & CInt("&H" & Right(HEXcolor1, 2)) & _
", " & CInt("&H" & Mid(HEXcolor1, 3, 2)) & _
", " & CInt("&H" & Left(HEXcolor1, 2)) & ")"

在哪里:
HEXcolor1 = Right("000000" & Hex(Sheet1.[LowColour].Interior.Color), 6)

RGB 值是一个字符串,而为了将其作为 .Color 传递, 我需要它是一个 Long (Color = rgb(255, 0, 0)) .

我知道存在建议使用调试窗口检索 ?rgb(255,0,0) 的解决方案。 ,但是,我想自动化这个过程。我试过 Clng()以及 .Evaluate()但他们没有工作。

非常感谢任何帮助!

最佳答案

您必须解析字符串。您可以使用正则表达式或只是进行一些简单的替换来隔离数字。例如:

strColor = "RGB(123, 0, 234)"
strColor = Replace(strColor, "RGB", "")
strColor = Replace(strColor, "(", "")
strColor = Replace(strColor, ")", "")
strColor = Replace(strColor, " ", "")

Dim a As Variant, c As Long
a = Split(strColor, ",")
c = a(0) * &H10000 + a(1) * &H100 + a(2)

Range("A1").Interior.Color = c

或者,使用正则表达式(您必须添加对 Microsoft VBScript Regular Expressions 5.5 库的引用):
With New RegExp
.Global = True
.Pattern = "[^\d,]" ' Remove anything that's not a digit or comma
Dim a As Variant, c As Long
a = Split(.Replace(strColor, ""), ",")
c = a(0) * &H10000 + a(1) * &H100 + a(2)
End If

Range("A1").Interior.Color = c

编辑:

这是一个快速但很老套的方法,使用 Eval()来自 Microsoft Script Control :
With CreateObject("MSScriptControl.ScriptControl")
.Language = "VBScript"
Range("A1").Interior.Color = .Eval(strColor)
End With

关于vba - 将字符串转换为 RGB() 值的 Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31684783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com