2013-05-07 110 views
2

我是在Excel中使用VBA宏的新手,我試圖根據另一個單元格不爲空的條件來更改單元格的背景顏色。我想我已經想通了,但是我一定是做錯了,因爲不管我指定'Interior.Color'改變爲什麼顏色,它都會將單元格變成難看的藍色。這裏是代碼:VBA Excel不會將單元格更改爲正確的顏色

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 
+0

您使用的是什麼版本的Excel? – datatoo 2013-05-07 15:28:41

+0

你使用任何條件格式? – 2013-05-07 16:12:00

+0

也許他們正在壓倒你的VBA代碼。 VBA做的是正確的事情,那麼你的條件格式就會去那裏並炸掉它。 – 2013-05-07 16:12:58

回答

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 
+0

對不起,我粘貼了我最近的修訂版本,我已經使用了你在那裏顯示的內容,RGB(255,0,0)以及ColorIndex = 4,並嘗試了幾種不同的顏色,它總是給我一個深綠色的藍色。 – zabimaru 2013-05-07 15:02:02

+0

如果沒有您正在使用的實際代碼,很難診斷問題。 – bernie 2013-05-07 15:03:26

+0

我的代碼是他給你的確切代碼 – zabimaru 2013-05-07 15:05:56

0

檢查調色板Excel有沒有改變
根據您的版本,你可以將其重置爲一個標準的調色板

在2003年工具>選項>顏色 http://support.microsoft.com/kb/288412介紹瞭如何做到這一點也

或者在更高版本中,您可能會應用導致問題的自定義主題