Excel:根据单元格中的输入更改单元格中的文本颜色(包括更新)

问题描述:

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

选择单元格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

如果您想使用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