问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ExcelVBA实现单元格背景颜色与RGB值互转

创作时间:
作者:
@小白创作中心

ExcelVBA实现单元格背景颜色与RGB值互转

引用
CSDN
1.
https://blog.csdn.net/fsyuheduo/article/details/144522284

在Excel中,我们通常用手工操作,设置单元格的背景颜色。而在电脑编程中,单元格的背景颜色由RGB(Red - 红、Green - 绿、Blue - 蓝)颜色模型是一种通过混合不同比例的红、绿、蓝三种颜色分量来表示颜色的方式。每个颜色分量的值范围是0到255。例如,(255, 0, 0)表示纯红色,(0, 255, 0)表示纯绿色,(0, 0, 255)表示纯蓝色,而(0, 0, 0)表示黑色,(255, 255, 255)表示白色。

颜色分量的意义

  • 红色分量(Red):决定了颜色中红色的强度。当红色分量的值越高时,颜色就越偏向红色。
  • 绿色分量(Green):控制颜色中绿色的含量。较高的绿色分量值使颜色更倾向于绿色。
  • 蓝色分量(Blue):确定颜色中蓝色的比重。大的蓝色分量值会让颜色更接近蓝色。

通过调整这三个分量的不同组合,可以创建出各种各样的颜色。

手工操作:设置单元格背景颜色并查看RGB值

鼠标右键已填充颜色的单元格->>点击打开“设置单元格格式”->>点击“填充”选项下的“其他颜色”->>点击“自定义”,选择颜色模式为RGB->>

下面进行ExcelVBA编程设计,我先设计了这样子的一个测试场景

在工作表“ 色彩”中,两个区域,

  • 由RGB取色:从K25单元格开始
  • 由色取RGB:从E25单元格开始

在VBA中:由RGB值设置单元格背景颜色

示例代码

Sub 由RGB取色()
    Dim Rng As Range
    With Worksheets("色彩")
        lastRow = .Range("K25").End(xlDown).Row
        For i = 26 To lastRow
            Set Rng = .Range("k" & i)
            rN = CInt(Rng.Offset(0, 1).value)
            Gn = CInt(Rng.Offset(0, 2).value)
            Bn = CInt(Rng.Offset(0, 3).value)
            Rng.Offset(0, 4).Interior.Color = RGB(rN, Gn, Bn)
        Next
    End With
End Sub

代码解析:

  1. 从K25到K25最后的一行循环
  2. RN=L列的值,GN=M列的值,BN=M列的值
  3. Range.Interior.Color=RGB(RN,GN,BN)的值

在VBA中:由单元格背景颜色提取RGB值

示例代码

Sub 由色取RGB()
    Dim Rng As Range
    With Worksheets("色彩")
        lastRow = .Range("E25").End(xlDown).Row
        For i = 26 To lastRow
            Set Rng = .Range("F" & i)
            Rng.Offset(0, 1) = Rng.Interior.Color Mod 256
            Rng.Offset(0, 2) = Rng.Interior.Color \ 256 Mod 256
            Rng.Offset(0, 3) = Rng.Interior.Color \ 256 \ 256 Mod 256
        Next
    End With
End Sub

代码解析:

相关知识

  1. Mod运算
    Mod运算符用于计算两个数相除后的余数,即取模运算
    如:result =10 Mod 3 ' result 的值为 1

  2. \运算
    \运算符用于执行整除运算,即计算两个数相除后的整数部分
    如:result = 10 \ 3 ' result 的值为 3

  3. 从E25到E25最后的一行循环

  4. Rng.Interior.Color是一个Long型整数

  5. R=Long Mod 256,就是 Long除以256后的余数,G,B同理进行取整再取余的运算。

下面是效果图

总结

单元格背景颜色与RGB值互转

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号