Excel:根据单元格中的输入更改单元格中的文本颜色(包括更新)
问题描述:
我不是Excel或VBA的专家,但我尽我所能。我有一个Excel文件,其中单元格D10空白或不空白。Excel:根据单元格中的输入更改单元格中的文本颜色(包括更新)
基于单元格D10空白或不空白,我想格式化文本颜色和/或单元格填充其他单元格。单元格D10可以在空白和非空白之间切换,并且颜色必须相应更改。
我所希望这没有奏效。这些更改并不适用于选择中的所有单元格,并且将单元格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
如何使这个模块不断“开”?
答
选择单元格D10和色带去公式>定义名称,并给电池D10的名称(例如,我将使用设为myVal)
关于第一个条件格式公式规则有:
=myVal=""
而对于你的第二个:
=myVal<>""
这将检查,看看是否有任何形式的D10值,并正确运用格式。
我已经更新了这个答案,因为Excel并没有完全配合我给出的初始解决方案,但我相信这应该可以解决它!
答
如果您想使用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
尝试下面的VBA解决方案 –
我的回答的代码我不知道,如果我得到这个权利。请参阅下面的链接。我做错了什么吗?正如我前面提到的,我不擅长VBA。 [截图](https://s17.postimg.org/azl3ukpin/vba.png) – ROLF