2017-09-05 168 views
0

我想创建一个宏以msgbox打开电子表格时使用红色填充的所有单元格,我目前有下面但它甚至不显示msgbox,任何想法?基于单元格颜色的vba 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 

感谢,

+2

推测细胞不是红色(或至少不255,0,0)?它们没有被条件格式化? – SJR

+0

它们根据日期有条件地格式化,所以今天之前要完成的任何事情都会变成红色,所以我想要它,所以当SS打开时它会告诉用户所有过期的项目,这是否有意义? – Brentford123

+0

'Interior.Colour'不会检测CF颜色,因此您可能必须使用您用于CF检查的条件。在最近的Excel版本中,我认为你可以使用'DisplayFormat'属性。 – SJR

回答

2

尝试看看在C1的RGB颜色,C11,采用下列内容:

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 

更简单的方法是的simpy与彩色选择单元格,并按下

单元格格>模式>颜色>定制

enter image description here

然后RGB值是可见的。


关于条件格式,它可能是最好的状态来应用相同的逻辑:Excel 2007 conditional formatting - how to get cell color?