每次宏为 运行 时从预定义的 RGB 颜色列表更改单元格背景颜色

Change Cell Background Colour from predefined RGB Colour List each time Macro is run

我正在尝试创建一个宏,其中将一系列单元格的背景颜色更改为预定义 RGB 颜色列表中的一种颜色。每次宏 运行 时,单元格范围颜色会更改为列表中的下一个颜色。

我在单元格“A9”中有一个参考编号,用于设置颜色列表中的编号(定义为 colourSel),以及它下方的 5 种 RGB 颜色列表 (A10:A14)。选择最后一种颜色后,colourSel 变量将重置并且列表从头开始。我可以很好地循环显示颜色,但无法使用 Interior.Color

设置颜色变量 (colourSet)

A9 3 (颜色选择) A10 RGB(131, 99, 172) A11 RGB(240, 92, 106) A12 RGB(13, 176, 219) A13 RGB(231, 167, 35) A14 RGB(244, 130, 33)

我收到错误 Type mismatch 我认为这是因为 colourSet 被定义为 String

Dim colourSel As Integer
Dim colourSet As String

Range("a9").Select
If ActiveCell.Value > 5 Then
    colourSel = 1
    GoTo resetcolour
    End If

colourSel = Range("a9").Value

resetcolour:

Range("a9").Offset(colourSel, 0).Select
colourSet = ActiveCell.Value

colourSel = colourSel + 1
    Range("a9").Value = colourSel

    Range("b2:c3").Interior.Color = colourSet

您可以在 VBA 中使用此函数来执行转换...

Public Function ConvertRGBStringToValues(strRGB As String)
    Dim arrRGB As Variant

    ' This is an example of what can be passed into this function ...
    ' strRGB = "RGB(11, 105, 11)"
    
    arrRGB = Split(Replace(Replace(Replace(strRGB, "RGB", "", Compare:=vbTextCompare), ")", ""), "(", ""), ",")
    
    ConvertRGBStringToValues = RGB(arrRGB(0), arrRGB(1), arrRGB(2))
End Function

...所以你会像这样应用它...

Range("b2:c3").Interior.Color = ConvertRGBStringToValues(colourSet)