Excel-VBA 读取单元格颜色
Posted
技术标签:
【中文标题】Excel-VBA 读取单元格颜色【英文标题】:Excel-VB read cell color 【发布时间】:2019-10-11 10:56:19 【问题描述】:我想知道为什么我的代码没有正确读取单元格值。 关键是excel是否将单元格标记为红色以及用户按下验证按钮时。 宏会根据单元格颜色给出一条消息。
目前我正在“c4”上对此进行测试,但如果我将其设置为红色 (255,0,0),它不会将其读取为“红色”
Sub Validate()
Dim xRng As Range
Dim ws As Worksheet
Set ws = Sheets("TEMPLATE")
Set xRng = Range("A2:N1000")
If ws.Range("C4").Interior.Color = RGB(255, 0, 0) Then
MsgBox "Found some errors, please review your template", vbOKOnly + vbCritical, "Validation"
Else
MsgBox "No direct errors found!", vbOKOnly + vbQuestion, "Validation"
End If
End Sub
【问题讨论】:
试试System.Drawing.ColorTranslator.ToOle(Color.red)
而不是RGB(255, 0, 0)
我在想同样的事情,因为代码对我来说似乎有效。但是,如果我用颜色工具检查它,它会显示 255 0 0。也许这些都有误差。我会尝试一个范围内的每个marge,如果它有效,我会验证它!
可能由于条件格式,单元格是红色的。我更改了标签,因为我认为这是纯 VBA 代码,至少我没有看到任何关于 VB.NET 的内容
啊这是 vba,感谢 Storax 的编辑
只要我直接格式化单元格,您的代码就可以为我工作。但如果我使用条件格式,它将不起作用。
【参考方案1】:
如果单元格按条件格式着色,您需要像这样检查它
If ws.Range("C4").DisplayFormat.Interior.Color = RGB(255, 0, 0) Then
' Your code here
Else
' Your code here
End If
【讨论】:
谢谢,这实际上是条件格式!很高兴知道它必须用 DisplayFormat 调用。谢谢!以上是关于Excel-VBA 读取单元格颜色的主要内容,如果未能解决你的问题,请参考以下文章
Python读取具有一些背景颜色的Excel工作表(xlsx)中的单元格
poi读取Excel时,如果单元格设置的是数字格式,如何解决整数与小数问题