【问题标题】:VBA Excel Won't Change Cell to the Right ColorVBA Excel不会将单元格更改为正确的颜色
【发布时间】:2013-05-07 14:31:38
【问题描述】:

我是在 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

【问题讨论】:

  • 你用的是什么版本的excel?
  • 您是否使用任何条件格式??
  • 也许他们正在覆盖您的 VBA 代码。 VBA 做了正确的事情,然后你的条件格式就到那里并把它炸毁。
  • 而且....您是running 每次更改 shSource 中单元格的值时的代码吗?或者你把它放在一些SheetUpdateevent 中?

标签: vba excel


【解决方案1】:

您必须使用颜色的索引或适当的 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

【讨论】:

  • 哦,抱歉,我粘贴了我的最新版本,我使用了您在此处显示的内容,RGB(255,0,0) 以及 ColorIndex = 4,并尝试了几种不同的颜色,它总是给出我是深绿色的蓝色。
  • 如果没有您现在使用的实际代码,很难诊断问题。
  • 我只是尝试了不同的颜色,看看是否有任何变化,但没有任何变化。
  • 您没有更改默认调色板颜色,是吗?您可能需要添加ActiveWorkbook.ResetColors 行,看看是否有影响。
  • .Interior.Color = RGB(255, 0, 0)=red BUT .Interior.Color = RGB(0, 0,255)=blue 即使你有 C175 你也会变成蓝色""或者至少是正确的?
【解决方案2】:

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

在 2003 中工具>选项>颜色 http://support.microsoft.com/kb/288412 也描述了如何做到这一点

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2013-10-19
    • 2017-09-17
    • 2013-03-09
    • 2018-10-17
    • 2015-10-21
    相关资源
    最近更新 更多