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 读取单元格颜色的主要内容,如果未能解决你的问题,请参考以下文章

自动填充中断一条记录 [Excel-VBA]

Python读取具有一些背景颜色的Excel工作表(xlsx)中的单元格

python读取一个单元格内的前几个字的颜色

poi读取Excel时,如果单元格设置的是数字格式,如何解决整数与小数问题

读取包含多个表格的 excel 表格,表格的标题具有非白色背景单元格颜色

用java poi包读取Excel单元格