ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1725|回复: 6

[原创] WPS JSA 设置颜色

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-4-19 20:57 | 显示全部楼层 |阅读模式
本帖最后由 imnnoii 于 2022-4-19 20:59 编辑

内容很简单!

避免您浪费过多时间直接上结论。

WPS的JSA将RGB颜色的R和B交换后转为10进制得到的数字作为颜色的属性值。  


-----------------------------
在WPS JSA中,如果希望通过JSA为单元格或者一些形状,或者一些文字。可能需要一点点的代码支持。  按照思路,我们直接调试看看WPS为我们返回的颜色是什么。
  首先给单元格A1填充一个颜色:RGB(237,125,49)
   image.png
  上代码看看返回的是一个什么颜色
   image.png
  是个数字:3243501
  为什么是个数字呢。颜色一般都是十六进制#ED7D31或者RGB(237,125,49).但是不可能没有关联啊,十六进制的0xED7D31转为10进制后为15564081
也不对。
直接将15564081赋值给单元格A1的.Interior.Color后如下图

image.png

刚刚好RGB(237,125,49)=>3243501。
RGB(237,125,49)<->RGB(49,125,237)
破案!!!
WPS的JSA将RGB颜色的R和B交换后转为10进制得到的数字作为颜色的属性值。
既然这样那就简单了。百度一个rgb转16进制的函数稍作修改
  1. function RGB(r,g,b){return (1 << 24) + (b << 16) + (g << 8) + r}
复制代码

用代码更改颜色成功:
image.png

不管是更改字体颜色,还是插入的形状颜色填充,还是字体颜色都一样。
搞定!!!










TA的精华主题

TA的得分主题

发表于 2022-4-24 12:41 | 显示全部楼层
JSA里面有没有颜色的枚举值可以直接用的

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-24 15:17 | 显示全部楼层
LMJ00 发表于 2022-4-24 12:41
JSA里面有没有颜色的枚举值可以直接用的

ColorIndex 值可设置从1-56。如果设置为0,为无颜色
具体可参考下面的变化

Index:-4142   RGB(255,255,255)
Index:1       RGB(0,0,0)
Index:2       RGB(255,255,255)
Index:3       RGB(255,0,0)
Index:4       RGB(0,255,0)
Index:5       RGB(0,0,255)
Index:6       RGB(255,255,0)
Index:7       RGB(255,0,255)
Index:8       RGB(0,255,255)
Index:9       RGB(128,0,0)
Index:10      RGB(0,128,0)
Index:11      RGB(0,0,128)
Index:12      RGB(128,128,0)
Index:13      RGB(128,0,128)
Index:14      RGB(0,128,128)
Index:15      RGB(192,192,192)
Index:16      RGB(128,128,128)
Index:17      RGB(153,153,255)
Index:18      RGB(153,51,102)
Index:19      RGB(255,255,204)
Index:20      RGB(204,255,255)
Index:21      RGB(102,0,102)
Index:22      RGB(255,128,128)
Index:23      RGB(0,102,204)
Index:24      RGB(204,204,255)
Index:25      RGB(0,0,128)
Index:26      RGB(255,0,255)
Index:27      RGB(255,255,0)
Index:28      RGB(0,255,255)
Index:29      RGB(128,0,128)
Index:30      RGB(128,0,0)
Index:31      RGB(0,128,128)
Index:32      RGB(0,0,255)
Index:33      RGB(0,204,255)
Index:34      RGB(204,255,255)
Index:35      RGB(204,255,204)
Index:36      RGB(255,255,153)
Index:37      RGB(153,204,255)
Index:38      RGB(255,153,204)
Index:39      RGB(204,153,255)
Index:40      RGB(255,204,153)
Index:41      RGB(51,102,255)
Index:42      RGB(51,204,204)
Index:43      RGB(153,204,0)
Index:44      RGB(255,204,0)
Index:45      RGB(255,153,0)
Index:46      RGB(255,102,0)
Index:47      RGB(102,102,153)
Index:48      RGB(150,150,150)
Index:49      RGB(0,51,102)
Index:50      RGB(51,153,102)
Index:51      RGB(0,51,0)
Index:52      RGB(51,51,0)
Index:53      RGB(153,51,0)
Index:54      RGB(153,51,102)
Index:55      RGB(51,51,153)
Index:56      RGB(51,51,51)

补充内容 (2022-5-7 15:35):
抄了一个更短的:function RGB(r,g,b){return 0xFF000000 | (b << 16) | (g << 8) | r;}

TA的精华主题

TA的得分主题

发表于 2024-12-4 12:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
JSA板块没啥人关注啊

TA的精华主题

TA的得分主题

发表于 2024-12-4 15:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢分享,学习了

TA的精华主题

TA的得分主题

发表于 2024-12-4 16:24 | 显示全部楼层
以前RGB函数不能用的时,一直用16进制,如0x0000ff,其中ff最低位的是R,0xff00000最高位对应的是B,中间是G。

TA的精华主题

TA的得分主题

发表于 2024-12-5 08:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 16:10 , Processed in 0.036499 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表