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

我不是Excel或VBA的专家,但我尽我所能。 我有一个Excel文件,单元格D10空白或不空白。

基于单元格D10空白或不空白,我想格式化文本颜色和/或细胞填充其他细胞。 单元格D10可以在空白和非空白之间切换,并且颜色必须相应改变。

首先,我试图做到这一点,而不使用VBA: 条件格式

这不是我所希望的。 所做的更改不适用于所选单元格中的所有单元格,并将单元格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 

我如何使这个模块不断“开”?

select单元格D10和function区转到公式>定义名称,并给单元格D10一个名称(例如,我将使用myVal。)

对于你的第一个条件格式公式规则有:

 =myVal="" 

而你的第二个:

 =myVal<>"" 

这将检查D10中是否有任何types的值,并正确应用格式。

我已经更新了这个答案,因为Excel并没有完全配合我提供的初始解决scheme,但我相信这应该可以解决它!

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