Excel:根据一个单元格中的输入更改单元格中的文本颜色(包括更新)
Excel: Change text color in cells based on input in one cell (incl. updating)
我不是 Excel 或 VBA 方面的专家,但我会尽力而为。我有一个 Excel 文件,其中单元格 D10 为空白或非空白。
基于单元格D10为空或不为空,我想格式化文本颜色and/or单元格填充到其他单元格。单元格 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
如何使这个模块不断地"on"?
Select 单元格 D10 和功能区转到“公式”>“定义名称”并为单元格 D10 命名(例如,我将使用 myVal。)
对于您的第一个条件格式公式规则有:
=myVal=""
第二个:
=myVal<>""
这将检查 D10 中是否有任何类型的值,并正确应用格式。
我已经更新了这个答案,因为 Excel 没有完全配合我提供的初始解决方案,但我相信这应该可以解决问题![=12=]
如果要使用VBA,需要将代码移动到相关sheet的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
我不是 Excel 或 VBA 方面的专家,但我会尽力而为。我有一个 Excel 文件,其中单元格 D10 为空白或非空白。
基于单元格D10为空或不为空,我想格式化文本颜色and/or单元格填充到其他单元格。单元格 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
如何使这个模块不断地"on"?
Select 单元格 D10 和功能区转到“公式”>“定义名称”并为单元格 D10 命名(例如,我将使用 myVal。)
对于您的第一个条件格式公式规则有:
=myVal=""
第二个:
=myVal<>""
这将检查 D10 中是否有任何类型的值,并正确应用格式。
我已经更新了这个答案,因为 Excel 没有完全配合我提供的初始解决方案,但我相信这应该可以解决问题![=12=]
如果要使用VBA,需要将代码移动到相关sheet的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