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

VBA Excel Won't Change Cell to the Right Color

我是在excel中使用VBA宏的新手,我试图根据另一个单元格不为空的条件来更改单元格的背景颜色。我以为我已经弄清楚了,但是我一定做错了,因为无论我指定要更改为哪种颜色" Interior.Color",它都会将单元格变成丑陋的蓝色。这是代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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


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

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

完整代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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


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

在2003 Tools>选项>颜色中
http://support.microsoft.com/kb/288412还介绍了如何执行此操作

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