==标题==
ExcelVBA实现单元格背景颜色与RGB值互转 |
==正文==
解决问题 |
1.手工操作:单元格背景颜色与RGB值 2.在VBA中:由RGB值设置单元格背景颜色 3.在VBA中:由单元格背景颜色提取RGB值 |
一、基本介绍
在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 RangeWith 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) NextEnd WithEnd 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 RangeWith 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 NextEnd WithEnd Sub
代码解析:
相关知识 |
1. Mod运算
如:result =10 Mod 3 ' result 的值为 1 2. \运算
如:result = 10 \ 3 ' result 的值为 3 |
1.从E25到E25最后的一行循环
2.Rng.Interior.Color是一个Long型整数
3.R=Long Mod 256,就是 Long除以256后的余数,G,B同理进行取整再取余的运算。
下面是效果图
六、总结:
单元格背景颜色与RGB值互转
==The end==
==合集==
====other====
关注 | 转发 | |
点赞 | 在看 |