2017-09-05 14 views
0

スプレッドシートを開くときに、赤い塗りつぶしのあるすべてのセルを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

次を使用して、C11にC1の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カラーの概要を印刷します。このように:次に

enter image description here

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

簡単にする方法は、色でセルを選択すると

セルの書式設定>パターン>色>カスタムを押してあるSimpyですRGB値が表示されます。

条件付き書式については

、それはおそらく状態と同じロジックを適用するのがベストです:Excel 2007 conditional formatting - how to get cell color?

関連する問題