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值。将
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还介绍了如何执行此操作
或者在更高版本中,您可能应用了导致问题的自定义主题