excel - VBA:不正确的颜色
问题描述
我想在 HTML 文件中使用单元格的背景颜色。因此,我需要颜色的十六进制代码。我使用以下代码来获取背景颜色的 HEX 代码。
MsgBox (ActiveCell.Interior.Color)
MsgBox Right("000000" & Hex(ActiveCell.Interior.Color), 6)
第一行返回 2303331,第二行返回 232563。我尝试在两个不同的网站上将 2303331 转换为 HEX 数字。两者都给出了#232563。我还尝试了反向转换,将#232563 转换为十进制,得到了 2303331。所以,数字没问题。
然后我在两个不同的网站上输入 #232563 以查看颜色是否与我的 Excel 表上的颜色匹配。不,它不匹配。#232563 是蓝色,而我的颜色是棕色,类似于 #450000。
我不知道如何获取单元格背景的十六进制代码。
解决方案
您必须反转 Hex 获得的字符串:
Sub testHexColor()
Dim hexStringCol As String
MsgBox (ActiveCell.Interior.Color)
hexStringCol = Right("000000" & Hex(ActiveCell.Interior.Color), 6)
Debug.Print hexStringCol
hexStringCol = "#" & Right(hexStringCol, 2) & Mid(hexStringCol, 3, 2) & left(hexStringCol, 2)
Debug.Print hexStringCol 'this is the correct one
End Sub
您可以测试它从获得的 Hex 字符串中提取 RGB 并为相邻单元格着色:
ActiveCell.Offset(0, 1).Interior.Color = HEXCOL2RGB(hexStringCol)
并使用下一个转换函数:
Private Function HEXCOL2RGB(ByVal HexColor As String) As String
Dim Red As String, Green As String, Blue As String
HexColor = Replace(HexColor, "#", "")
Red = val("&H" & Mid(HexColor, 1, 2))
Green = val("&H" & Mid(HexColor, 3, 2))
Blue = val("&H" & Mid(HexColor, 5, 2))
HEXCOL2RGB = RGB(Red, Green, Blue)
End Function
推荐阅读
- django - 如何重复django事件发生周期?
- ios - 当 UIViewController 出现时如何得到通知?
- sql - 您可以使用 Group By 将人们分组到年龄组吗
- forms - 如何在flutter_form_bloc中动态生成字段?
- mongodb - 在我的情况下,为什么我的猫鼬请求返回查询而不是结果数据、用户信息?
- reactjs - 如何在反应管理员中更改文本输入的变体
- ruby-on-rails - Apple Auth 不适用于 Ruby on Rails 后端
- javascript - 使用 jQuery 复制字段
- angular - 将所有用户从 firebase 获取到自己的后端
- python-3.x - 日期数组到轴单位的 Matplotlib 转换失败