下面是我希望以手动复制和粘贴以外的方式实现的屏幕截图。
这是材料设计颜色托盘,在Excel中看起来很棒。
如何遍历范围B2:B15并将每个单元格背景色设置为其对应的包含色?
也许是 VBA循环,以遍历垂直B单元格范围,解析每个单元格内容,并设置单元格背景颜色以单元格包含的 RGB值。
因此包含 rgb(255,235,238) 的RED-50单元变为...
Range("B2").Interior.Color = RGB(255, 235, 238)
更新!
感谢大家的帮助。以下是Google驱动器链接到您帮助我构建的Excel材质设计面板。
按Control + M 激活。
所有的颜色都变成了自己。
答案 0 :(得分:2)
一个无需使用正则表达式的简单解决方案:
Sub test()
Dim r As Range
For Each r In Range("B1:B10")
r.Interior.Color = StringToRGB(r.Text)
Next
End Sub
Public Function StringToRGB(s As String) As Long
Dim parts
s = Mid(s, 5, Len(s) - 5)
s = Replace(s, " ", "")
parts = Split(s, ",")
StringToRGB = RGB(CInt(parts(0)), CInt(parts(1)), CInt(parts(2)))
End Function
答案 1 :(得分:1)
也许是这样吗?我无法将单元格的值传递到Interior.Color
中,所以我决定使用Split
分别提取每种颜色。如果需要,请调整Sheet1
。
Sub InteriorColor()
Dim rngCell As Excel.Range
Dim varColors As Variant
Dim lngR As Long, lngG As Long, lngB As Long
For Each rngCell In Sheet1.Range("B2:B15")
varColors = Split(rngCell.Value, ",")
lngR = Right(varColors(0), Len(varColors(0)) - 4)
lngG = Trim(varColors(1))
lngB = Left(varColors(2), Len(varColors(2)) - 1)
rngCell.Interior.Color = RGB(lngR, lngG, lngB)
Next rngCell
End Sub
结果:
答案 2 :(得分:1)
这会将括号中的内容分成一个变量数组中的三个元素,并使用RGB函数将其应用于单元格。您将需要添加一些错误检查,以确保该单元格包含有效的RGB值。
Sub ApplyColor()
Dim cell As Excel.Range
Dim RGBs As Variant
For Each cell In ActiveSheet.Range("B2:B15")
RGBs = Split(Replace(Replace(cell.Value, "rgb(", ""), ")", ""), ",")
cell.Interior.Color = RGB(RGBs(0), RGBs(1), RGBs(2))
Next cell
End Sub