2017-09-05 166 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?