Excel精英培训网

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

[已解决]请教HEX()函数把RGB值转换成十六进制的问题

[复制链接]
发表于 2014-8-24 16:29 | 显示全部楼层 |阅读模式
HEX(RGB(141,180,226) ) 结果:E2B48D 没有问题

可是如果这个 RGB(141,180,226) 在 单元格里面如 A1,那么 HEX (CELLS(1,1)) 就说类型不匹配,难道是因为CELLS(1,1)是字符串类型吗?
最佳答案
2014-8-25 17:56
用下面的代码试试:
  1. Sub cc()
  2.     Dim strA$$
  3.     strA = [a1].Value
  4.     strA = Replace(strA, "RGB(", "")
  5.     strA = Replace(strA, ")", "")
  6.    
  7.     arr = Split(strA, ",")
  8.     MsgBox Hex(RGB(arr(0), arr(1), arr(2)))
  9. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-8-25 09:50 | 显示全部楼层
把RGB当成一个函数,没问题的是因为你用的是函数用法.直接引用是字符串,所以错了
回复

使用道具 举报

 楼主| 发表于 2014-8-25 10:27 | 显示全部楼层
Dj_soo 发表于 2014-8-25 09:50
把RGB当成一个函数,没问题的是因为你用的是函数用法.直接引用是字符串,所以错了


那能把这个字符串转换成类似那个RGB函数值的东西吗?

点评

可以,拆分出来重新组合就行了  发表于 2014-8-25 10:48
回复

使用道具 举报

 楼主| 发表于 2014-8-25 10:54 | 显示全部楼层
Dj_soo 发表于 2014-8-25 09:50
把RGB当成一个函数,没问题的是因为你用的是函数用法.直接引用是字符串,所以错了

我这个RGB字符串是在一个单元格里面,拆分怎么做?我是新手能帮帮我吗?谢谢
回复

使用道具 举报

发表于 2014-8-25 11:37 | 显示全部楼层
jessylake 发表于 2014-8-25 10:54
我这个RGB字符串是在一个单元格里面,拆分怎么做?我是新手能帮帮我吗?谢谢

楼主你是要闹哪样? 不是已经在EH回答过了吗。
回复

使用道具 举报

 楼主| 发表于 2014-8-25 12:04 | 显示全部楼层
香川群子 发表于 2014-8-25 11:37
楼主你是要闹哪样? 不是已经在EH回答过了吗。

大侠的作品貌似很高深的样子呵呵,对我这个初学者来说都没敢看,等静下心的时候好好研究研究
回复

使用道具 举报

发表于 2014-8-25 13:30 | 显示全部楼层
如果作为学习者,是想学习如何编写代码,那么很重要的一条是首先学会怎么样去使用函数。
RGB是VBA里面的函数,你在单元格中输入“RGB(0,1,2)”,
然后在VBA代码中:Hex([A1]),就相当于Hex("RGB(0,1,2)"),那么这个肯定是类型不匹配错误了。
在VBA里面
a = RGB(0,1,2),将执行RGB函数运行,得到的结果是一个数字。
b = "RGB(0,1,2)"  那么得到的b就只能是一个字符串。

解决方法有N种,但常规点来说,第一,另辟蹊径,将RGB三个色彩值,放置在3个单元格,比如:
a1 = 141,  b1 = 180, c1 = 226
然后在VBA里面写:Hex(RGB(Cells(1,"A"),Cells(1,"B"),Cells(1,"C")))
那么这么写就可以完美的执行RGB函数,并得到你想要的结果了!

第二,如果你非要在A1里面输入RGB(141,180,226),那么只能通过函数或其他方法将数值先分离出来,得到a = 141,b=180,c=226,然后使用HEx(RGB(a,b,c))这样的方法得到想要的数值。

第三,找一个可以运行字符串的函数。
回复

使用道具 举报

 楼主| 发表于 2014-8-25 13:50 | 显示全部楼层
FF7 发表于 2014-8-25 13:30
如果作为学习者,是想学习如何编写代码,那么很重要的一条是首先学会怎么样去使用函数。
RGB是VBA里面的函 ...

谢谢老师指点,我现在就在学习用第二种方法,看怎么分拆出这三个数,内容比较多,慢慢学吧
回复

使用道具 举报

发表于 2014-8-25 17:56 | 显示全部楼层    本楼为最佳答案   
用下面的代码试试:
  1. Sub cc()
  2.     Dim strA$$
  3.     strA = [a1].Value
  4.     strA = Replace(strA, "RGB(", "")
  5.     strA = Replace(strA, ")", "")
  6.    
  7.     arr = Split(strA, ",")
  8.     MsgBox Hex(RGB(arr(0), arr(1), arr(2)))
  9. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-8-25 19:19 | 显示全部楼层
本帖最后由 jessylake 于 2014-8-25 19:28 编辑
FF7 发表于 2014-8-25 17:56
用下面的代码试试:


正在一个函数一个函数的查用法,您的方法就到了,真是及时呀,太感谢了,终于学会用replace了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 19:18 , Processed in 0.372087 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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