Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 21565|回复: 14

[已解决]如何通过RGB值实现颜色自动填充?

[复制链接]
发表于 2015-5-26 11:53 | 显示全部楼层 |阅读模式
单元格的颜色与单元格里面的RGB数值关联起来怎么做?
比如单元格内容是0,101,255如何自动把这个单元格填充为RGB=0,101,255的背景颜色,
最好还能把单元格文字的颜色与背景颜色为相反,如果背景颜色是黑色,则文字颜色为白色

最佳答案
2015-5-26 13:17
  1. Sub demoRGB()
  2.     Dim r As Range, arr
  3.     For Each r In Range("A1:A8")
  4.         arr = Split(r, ",")
  5.         r.Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))
  6.         r.Font.Color = RGB(255 - CInt(arr(0)), 255 - CInt(arr(1)), 255 - CInt(arr(2)))
  7.     Next
  8. End Sub
复制代码
发表于 2015-5-26 12:08 | 显示全部楼层
回复

使用道具 举报

发表于 2015-5-26 12:59 来自手机 | 显示全部楼层
建议上次你的excel文件,免得别人给了答案后,再改。
回复

使用道具 举报

 楼主| 发表于 2015-5-26 13:12 | 显示全部楼层
爱疯 发表于 2015-5-26 12:59
建议上次你的excel文件,免得别人给了答案后,再改。

EXCEL附件上传不了,帮我写个代码,谢谢啦

另:我有若干个RGB值,就是说我只需要输入RGB值,就可以在另一个单元格显示颜色。
回复

使用道具 举报

发表于 2015-5-26 13:17 | 显示全部楼层    本楼为最佳答案   
  1. Sub demoRGB()
  2.     Dim r As Range, arr
  3.     For Each r In Range("A1:A8")
  4.         arr = Split(r, ",")
  5.         r.Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))
  6.         r.Font.Color = RGB(255 - CInt(arr(0)), 255 - CInt(arr(1)), 255 - CInt(arr(2)))
  7.     Next
  8. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-5-26 13:37 | 显示全部楼层
冥王 发表于 2015-5-26 13:17

代码运行时显示“下标越界”是哪有问题啊
回复

使用道具 举报

 楼主| 发表于 2015-5-26 14:44 | 显示全部楼层
冥王 发表于 2015-5-26 13:17

Sub demoRGB()
    Dim r As Range, arr
    For Each r In Range("A1:A8")
        arr = Split(r, ",")
        r.Interior.color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))
        r.Font.color = RGB(255 - CInt(arr(0)), 255 - CInt(arr(1)), 255 - CInt(arr(2)))
    Next r
   
End Sub



坛子大哥写了个VBA,运行时显示下标越界,是何意?
回复

使用道具 举报

发表于 2015-5-26 14:45 | 显示全部楼层
Leozheng 发表于 2015-5-26 14:44
Sub demoRGB()
    Dim r As Range, arr
    For Each r In Range("A1:A8")

RGB颜色 三个参数范围都是0-255之间 如果数值超过了这个范围 就会报错
回复

使用道具 举报

 楼主| 发表于 2015-5-26 20:28 | 显示全部楼层
冥王 发表于 2015-5-26 14:45
RGB颜色 三个参数范围都是0-255之间 如果数值超过了这个范围 就会报错

明白了,
还有,如果我希望RGB值在A列,颜色填充在B列,怎么改呀?
回复

使用道具 举报

发表于 2015-5-26 20:31 | 显示全部楼层
Sub demoRGB()
    Dim r As Range, arr
    For Each r In Range("A1:A8")
        arr = Split(r, ",")
        r.Offset(0, 1).Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))
        r.Offset(0, 1).Font.Color = RGB(255 - CInt(arr(0)), 255 - CInt(arr(1)), 255 - CInt(arr(2)))
    Next
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 22:23 , Processed in 0.295297 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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