2016-11-29 79 views
1

我不是Excel或VBA的專家,但我盡我所能。我有一個Excel文件,其中單元格D10空白或不空白。Excel:根據單元格中的輸入更改單元格中的文本顏色(包括更新)

基於單元格D10空白或不空白,我想格式化文本顏色和/或單元格填充其他單元格。單元格D10可以在空白和非空白之間切換,並且顏色必須相應更改。

首先,我試圖做到這一點,而無需使用VBA: Conditonal Formatting

我所希望這沒有奏效。這些更改並不適用於選擇中的所有單元格,並且將單元格​​D10從空白更改爲非空白並返回空白不起作用。

然後我嘗試了一些VBA,我不知道該怎麼做。有人能幫助我嗎?

Sub colourChange() 

If Range("D10") = ISBLANK Then 
    Range("C18:I20").Font.Color = RGB(256, 256, 256) 
    Range("C32:I33").Font.Color = RGB(256, 256, 256) 
End If 

If Range("D10") = Not (ISBLANK) Then 
    Range("C18:I20").Font.Color = RGB(0, 0, 0) 
    Range("C32:I33").Font.Color = RGB(0, 0, 0) 
End If 

End Sub 

如何使這個模塊不斷「開」?

+0

嘗試下面的VBA解決方案 –

+0

我的回答的代碼我不知道,如果我得到這個權利。請參閱下面的鏈接。我做錯了什麼嗎?正如我前面提到的,我不擅長VBA。 [截圖](https://s17.postimg.org/azl3ukpin/vba.png) – ROLF

回答

1

選擇單元格D10和色帶去公式>定義名稱,並給電池D10的名稱(例如,我將使用設爲myVal)

關於第一個條件格式公式規則有:

=myVal="" 

而對於你的第二個:

=myVal<>"" 

這將檢查,看看是否有任何形式的D10值,並正確運用格式。

我已經更新了這個答案,因爲Excel並沒有完全配合我給出的初始解決方案,但我相信這應該可以解決它!

+0

謝謝:)。但是,這不適用於整個選擇:「= $ C $ 18:$ I $ 20; $ C $ 32:$ I $ 33」。 D10更改時,只有一個單元格(C18)發生更改。其餘的都有白色文本,不管D10。 – ROLF

+0

如果您想添加額外範圍,請將分號更改爲逗號。 – Clusks

+0

我認爲我的Excel版本使用分號代替逗號。至少這就是我必須在公式中使用的(例如= IF(A1 = A2;「OK」;「Not OK」) – ROLF

0

如果您想使用VBA,您需要將代碼移動到Worksheet_Change事件的相關工作表。

然後,您需要檢查Target範圍是否爲單元格D10,然後檢查如何相應地修改Font.Color

注意:您可以在Union的一行中設置多個範圍,如我在下面的代碼中實現的。

代碼

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim WatchRange     As Range 

' set watch range to cell D10 
Set WatchRange = Range("D10") 

' if modifed cell is D10 >> enter the rest of the code 
If Not Intersect(Target, WatchRange) Is Nothing Then 
    If IsEmpty(Range("D10")) Or Range("D10").Value = "" Then 
     Union(Range("C18:I20"), Range("C32:I33")).Font.Color = RGB(256, 256, 256) 
    Else 
     Union(Range("C18:I20"), Range("C32:I33")).Font.Color = RGB(0, 0, 0) 
    End If 
End If 

End Sub 
相關問題