【问题标题】:vba msgbox cells based on cell colour基于单元格颜色的vba msgbox单元格
【发布时间】:2018-02-13 20:35:18
【问题描述】:

我正在尝试创建一个宏,以在打开电子表格时将所有带有红色填充的单元格添加到 msgbox 中,我目前有以下内容,但它甚至没有显示 msgbox,有什么想法吗?

Sub test()

Dim ws As Worksheet
Set ws = Sheets("Month End Tasks")
Dim i As Integer
i = 1
Do Until i = 11
    If ws.Range("C" & i).Interior.Color = RGB(255, 0, 0) Then
        MsgBox "C" & i & "  is red!!"
    End If
i = i + 1
Loop

End Sub

谢谢,

【问题讨论】:

  • 大概单元格不是红色的(或者至少不是 255,0,0)?它们不是按条件格式着色的吗?
  • 它们是根据日期有条件地格式化的,所以今天之前要做的任何事情都会被涂成红色,所以我想要它,所以当 SS 打开时,它会告诉用户今天所有过期的项目,这有意义吗?
  • Interior.Colour 不会检测 CF 颜色,因此您可能必须使用用于 CF 的条件进行检查。在最新版本的 Excel 中,我认为您可以使用 DisplayFormat 属性。

标签: vba excel colors cell msgbox


【解决方案1】:

尝试查看 C1 到 C11 的 RGB 颜色,使用以下方法:

Sub WriteCellColor()

    Dim ws      As Worksheet
    Dim i       As Long

    Set ws = ActiveSheet

    i = 1
    Do Until i = 11
        Debug.Print ws.Range("C" & i).Address
        Debug.Print getRGB2(ws.Range("C" & i).Interior.Color)
        i = i + 1
    Loop

End Sub

Public Function getRGB2(l_long) As String

    Dim c   As Long
    Dim R   As Long
    Dim G   As Long
    Dim B   As Long

    c = l_long
    R = c Mod 256
    G = c \ 256 Mod 256
    B = c \ 65536 Mod 256
    getRGB2 = "R=" & R & ", G=" & G & ", B=" & B

End Function

它将在即时窗口中打印 RGB 颜色的摘要。像这样:

$C$1
R=255, G=0, B=0
$C$2
R=255, G=255, B=0

更简单的方法是选择具有颜色的单元格并按

单元格格式>图案>颜色>自定义

然后RGB值是可见的。


关于条件格式,最好应用与条件中相同的逻辑:Excel 2007 conditional formatting - how to get cell color?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多