VBA Excel不会将单元格更改为正确的颜色

时间:2013-05-07 14:31:38

标签: excel vba excel-vba

我在excel中使用VBA宏是新手,我正在尝试根据另一个单元格不为空的条件更改单元格的背景颜色。我以为我弄清楚了,但我一定做错了,因为无论我指定'Interior.Color'变成什么颜色,它都会让细胞变成丑陋的蓝色。这是代码:

Sub Hello()
    MsgBox ("Hello, world!")

    Dim shSource As Worksheet
    Dim shDest As Worksheet

    Set shSource = ThisWorkbook.Sheets("Box Channel Tracking")
    Set shDest = ThisWorkbook.Sheets("Box Channel Schematic")

    If shSource.Range("C176").Value <> "" Then
        shDest.Range("E8").Interior.Color = RGB(255, 255, 255)
        shDest.Range("E8").Interior.Pattern = xlSolid   
    Else
        shDest.Range("E8").Interior.Color = Red
        shDest.Range("E8").Interior.Pattern = xlSolid  
    End If
End Sub

2 个答案:

答案 0 :(得分:3)

您必须使用颜色索引或相应的RGB值。将else分支的第一行更改为:

        shDest.Range("E8").Interior.Color = RGB(255, 0, 0)

完整代码示例:

Sub Hello() 
    MsgBox ("Hello, world!")

    Dim shSource As Worksheet
    Dim shDest As Worksheet

    Set shSource = ThisWorkbook.Sheets("Box Channel Tracking")
    Set shDest = ThisWorkbook.Sheets("Box Channel Schematic")

    If shSource.Range("C176").Value <> "" Then
        shDest.Range("E8").Interior.Color = RGB(255, 255, 255)
        shDest.Range("E8").Interior.Pattern = xlSolid
    Else
        shDest.Range("E8").Interior.Color = RGB(255, 0, 0) '<-modified
        shDest.Range("E8").Interior.Pattern = xlSolid
    End If
End Sub

答案 1 :(得分:0)

检查excel的调色板是否未更改 根据您的版本,您可以将其重置为标准调色板

在2003工具&gt;选项&gt;颜色   http://support.microsoft.com/kb/288412描述了如何执行此操作

或者在更高版本中,您可能会应用导致问题的自定义主题