人气 4280

vb/vba颜色和RGB颜色互转 [复制链接]

多看少说没错- 2017-2-18 16:44:46
微软的东西就是要独特另行,很多东西都和其他人不一样。我不排斥个性,但这样会造成很多不必要的麻烦。
这个颜色也是如此。vb/vba中的颜色是一个10进制的数字,Long类型。通常使用的Web颜色是十六进制表示,即RGB颜色。例如,纯绿色:vb/vba:65280RGB颜色:00FF00这个绿色在vb/vba中有被定义为常量(在vb/vba代码界面按F2,搜索vbGreen)

这里也可以看出vb/vba的颜色也可以用十六进制表示。无语的是,这个十六进制和RGB颜色的是十六进制不一样。RGB颜色的以白色为例:FFFFFF。其中头两位FF是代表红色区域的值,中间两位是代表绿色,后两位是代表蓝色。也就是这六个数字分别是:红红绿绿蓝蓝。vb/vba颜色十六进制表示方式实际上是它的10进制转化而成的。结果和RGB的顺序不一样,vb/vba的顺序是蓝蓝绿绿红红。红色和蓝色的位置和RGB颜色是相反的。知道这个规律之后,就可以实现颜色转换了。
vb/vba颜色转RGB颜色代码:PublicFunctionVba2RGB(lngVbaColorAsLong)
DimstrHexColorAsString
strHexColor=Hex(lngVbaColor) '转为十六进制 '
'补齐其他颜色值(凑够6位) '
strHexColor=String(6-Len(strHexColor),"0")&strHexColor
DimstrRAsString
DimstrGAsString
DimstrBAsString
strR=Right(strHexColor,2) '得到R颜色值 '
strG=Mid(strHexColor,3,2) '得到G颜色值 '
strB=Left(strHexColor,2) '得到B颜色值 '
'调整位置,拼成RGB颜色 '
Vba2RGB=strR&strG&strB
EndFunction
RGB颜色转vb/vba颜色代码:PublicFunctionRGB2Vba(strRGBColorAsString)
DimstrRAsString
DimstrGAsString
DimstrBAsString
strR=Left(strRGBColor,2) '得到R颜色值 '
strG=Mid(strRGBColor,3,2) '得到G颜色值 '
strB=Right(strRGBColor,2) '得到B颜色值 '
'拼成VBA的颜色值 '
RGB2Vba=RGB(Val("&H"&strR),Val("&H"&strG),Val("&H"&strB))
EndFunction
使用方法就不用说了,分别是两个公共函数,传进对应的值即可。
您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

GMT+8, 2024-12-22 18:06 , Processed in 0.269613 second(s), 20 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN