java cell获取颜色_关于Excel中如何将单元格底色变为该颜色的操作方式

2e119cc0f64eb106560a43421e17dd3c.png

今天好友向我求助,让我这个Excel大神(误)帮他把颜色代码全部以可视化的形式展现出来

我说你自己去网站查颜色不就好了?

他说有几千个呢……几千个………………

emmmmmmm……

好吧,本着“你不会去查百度啊”的精神,这种需求不可能只有他才需要

所以给了他关键字,让自生自灭去了

还真给找着了

2fd55dd6319b764becde3154bdd75c71.png
有网友提出了问题,不过只有一个回答

于是我简单的看了一下这个答案……好吧,只能说这名网友是有根基的,但是对色彩貌似并没有什么概念,按RGB格式排列的AF0000怎么可能会呈现蓝色呢……

对,像极了我的一个下属,写完代码编译没报错就告诉我“老大这个做好了”然后内测的时候全是错的……

1a440f50245dc4c26a2719cbbd47230e.png

0794ff5ef7a586cf8fca6009f1f68293.png

接下来进入正题

Excel的颜色标记并不是我们平时使用的RGB,而是BGR

这就意味着我们平时所熟知的纯红色#FF0000在EXCEL中被识别为了纯蓝色,而#0000FF也对应变成了纯红色。

所以在EXCEL中进行颜色标记时,需要把三原色的位置对调过来。

将宏代码改为使用RGB的方式进行排列

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then   '获取第一列的值
        For Each cell In Target
            If cell = "" Then
                cell.Offset(0, 2).Interior.Pattern = xlNone 'Offset(单元格行偏移(Y轴), 单元格列偏移(X轴)),当第一列无有效值时设置为无底色
                Exit Sub
            Else
                '以RGB的格式进行获取,固定六位数以每两位进行截断并转换为对应的十进制,就可以以平时的RGB形式展现
                cell.Offset(0, 2).Interior.Color = RGB(Application.Hex2Dec(Mid(cell, Len(cell) - 5, 2)), Application.Hex2Dec(Mid(cell, Len(cell) - 3, 2)), Application.Hex2Dec(Right(cell, 2)))
            End If
        Next
    End If
End Sub

最后呈现效果

1b6bd0dda0f26f71a68d51cdfcae7ef4.png

如果有尝试不成功的,来找我


原百度提问

excel中颜色16进制转换为rgb,单元格底色变为该颜色_百度知道​zhidao.baidu.com
7a1e3de34729726229781c115909d1f8.png
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值