专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

想不到吧?万能的RGB着色竟然如此简单

ins518 2024-10-08 08:33:27 技术文章 14 ℃ 0 评论

RGB函数几乎是对于VBA后台对Office前端颜色着色操作几乎是万能的。当然,也可以在Office的各个组件的VBA环境下运用各自特有的着色属性完成,比如在Excel环境下,用.Interior.ColorIndex、.Interior.Color属性都可以对单元格区域着色,而对于自选图形着色可以用.Fill.ForColor.Color、Fill.ForColor.SchemeColor属性可以实现自选图形着色。无论怎样,.Color或.Color.RGB属性却是通用的着色方法。其中,SchemeColor是方案颜色属性。

但是,RGB(r,g,b)函数的颜色分量坐标值是很繁杂且不容易记住的,有没有更好的办法解决呢?事实上,是可以的,虽然RGB(r,g,b)函数的颜色分量坐标值是很繁杂,但是RGB有一个由这些分量颜色值合成的RGB颜色着色总值,我们可以用这个RGB颜色着色总值去替代RGB(r,g,b)函数值,因为RGB颜色着色总值和RGB(r,g,b)函数是等值的,这样一来,就很方便了。问题又来了,这个RGB颜色着色总值如何获取和知晓呢?很简单,直接可以提取一个对象的Color属性即可获取。

为了方便起见,我特总结了它们,并且以一个数组的形式存储这些RGB颜色着色总值。于是,我们就可以很方便地通过查找这些RGB颜色着色总值在数组中的编号即可提取这些RGB颜色着色总值,是不是很方便呢?呵呵!下面,我们就来给大家细细分享吧。

一、RGB颜色编号、RGB颜色着色总值和RGB()函数的分量值对比关系

见下图所示

二、运用一个RGB颜色着色总值数组去存储RGB颜色着色总值

该数组可以定义和初始化如下:

RGB_ColorValue_Arr = Array(0, 16777215, 255, 65280, 16711680, 65535, 16711935, 16776960, 128, 32768, 8388608, 32896, 8388736, 8421376, 12632256, 8421504, 16751001, 6697881, 13434879, 16777164, 6684774, 8421631, 13395456, 16764108, 8388608, 16711935, 65535, 16776960, 8388736, 128, 8421376, 16711680, 16763904, 16777164, 13434828, 10092543, 16764057, 13408767, 16751052, 10079487, 16737843, 13421619, 52377, 52479, 39423, 26367, 10053222, 9868950, 6697728, 6723891, 13056, 13107, 13209, 6697881, 10040115, 3355443)

三、在VBA后台如何实现这些对应关系的方法

代码如下:

Sub Get_RGB_ColorValue()

Dim rg_color As Range, rg_color_num As Range, rg_dst As Range

For i = 1 To 56

Set rg_color = Cells(i + 1, 1)

Set rg_color_num = Cells(i + 1, 3)

rg_color_num = rg_color.Interior.Color

Set rg_dst = Cells(i + 1, 4)

rg_dst.Interior.Color = rg_color_num

Next

End Sub

Function RGB_Color_Weight(Color_Value As Long) As String '分解三基色RGB分量坐标值

'以下是分解R(红Red)、G(绿Green)、B(蓝Blue)三基色的色坐标分量坐标值

RedColor_Weight = Color_Value Mod 256 '0~255共265种颜色,得到RGB“红色”坐标分量值:RedColor_Weight

GreenColor_Weight = (Color_Value - RedColor_Weight) / 256 Mod 256 '得到RGB“绿色”坐标分量值:GreenColor_Weight

BlueColor_Weight = (Color_Value - RedColor_Weight - GreenColor_Weight * 256) / 256 ^ 2 '得到RGB“蓝色”坐标分量值:BlueColor_Weight

RGB_Color_Weight = "RGB(" & RedColor_Weight & "," & GreenColor_Weight & "," & BlueColor_Weight & ")"

End Function

四、测试万能的RGB颜色着色总值进行对象着色的效果

(一)用RGB方式对自选图形着色

(二)用RGB方式对自选图形内部的文字着色

编写如下代码(可在Office组件“Word、Excel、PowerPoint”中任何一种中涉及均可)

运行以上代码可见如下图的效果

(三) 用RGB方式对Excel的背景着色

Excel中编写如下代码

运行以上代码可见如下图的效果

(四)用RGB方式对PowerPoint的背景着色

PowerPoint中编写如下代码

运行以上代码可见如下图的效果

(五)用RGB方式对Word的背景着色

Word中编写如下代码

运行以上代码可见如下图的效果

五、技术小结

灵活运用RGB方式为Office对象着色的方式方法要灵活处理,比如对图形的着色可以用“.Fill.ForColor.Color.RGB=RGB颜色着色总值”,对于图形中的文字着色可以用“.TextFrame.TextRang.Font.Fill.ForColor.Color=RGB颜色着色总值”的形式完成,对于Excel中单元格区域的着色可以用“.Interior.Color=RGB颜色着色总值”方式完成。

好了,我们就分享到这里吧,希望我的分享能够给予工作上带来帮助。最后,还是感谢大家的关注(头条号:跟我学office高级办公)、推广和点评哦!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表