Excel 条件格式定义范围
我有以下代码:Excel 条件格式定义范围,excel,vba,Excel,Vba,我有以下代码: Sub ConditionalFormattingNamedRange() Dim x As Range, Cell As Range Set x = Range("AALB_Exposure") For Each Cell In x If Cell.Value > Sheets("Overview").Range("E4").Value Then Cell.Interio
Sub ConditionalFormattingNamedRange()
Dim x As Range, Cell As Range
Set x = Range("AALB_Exposure")
For Each Cell In x
If Cell.Value > Sheets("Overview").Range("E4").Value Then
Cell.Interior.Color = RGB(0, 255, 0)
End If
Next
End Sub
背景信息:如果我定义的范围“AALB_曝光”中的值大于工作表“概述”中的单元格E4,则此公式会将其着色。单元格E4的值是其他两个单元格的结果。有时这些细胞中的一个会发生变化。我有20多个定义范围,如“AALB_曝光”,因此我更喜欢使用模块
问题:此模块使所有值都着色。有时“AALB_曝光”中有一些空白单元格。我希望这种情况不会发生。这可能吗?
此外,此模块是静态的,在我调整E4时不会修改定义范围内单元格的颜色。这只有在我运行模块之后才会发生。是否可以确保根据E4值的变化立即调整单元格的颜色
谢谢大家!
-----编辑------
在布鲁斯·韦恩的建议下,我稍微修改了一下代码
Private Sub Workbook_SheetCalculate(ByVal Target As Range, ByVal Sh As Worksheet)
If Target.Address = "$A$9" Then
Application.ScreenUpdating = False
Dim x As Range, Cell As Range
Set x = Sh.Range("P1:P150,AD1:AD150,AR1:AR150,BF1:BF150,BT1:BT150,CH1:CH150,CV1:CV150,DJ1:DJ150,DX1:DX150,EL1:EL150")
For Each Cell In x
If Cell.Value > Sh.Range("A9").Value And Cell.Value <> "" Then
Cell.Interior.Color = RGB(0, 255, 0)
End If
Next
End If
Application.ScreenUpdating = True
Private子工作簿\u SheetCalculate(ByVal目标作为范围,ByVal Sh作为工作表)
如果Target.Address=“$A$9”,则
Application.ScreenUpdating=False
尺寸x作为范围,单元格作为范围
设置x=Sh.Range(“P1:P150,AD1:AD150,AR1:AR150,BF1:BF150,BT1:BT150,CH1:CH150,CV1:CV150,DJ1:DJ150,DX1:DX150,EL1:EL150”)
对于x中的每个单元格
如果Cell.Value>Sh.Range(“A9”)值和Cell.Value“”,则
Cell.Interior.Color=RGB(0,255,0)
如果结束
下一个
如果结束
Application.ScreenUpdating=True
端接头
由于每个工作表的命名范围始终相同,因此用这种方式解决问题可能更好?因此,我更改了位于概览表上的单元格E4,该单元格始终位于每张表的相同位置。
但是,此新模块是否正确?如果希望在
E4
发生更改时运行此模块,则需要将其放入工作表更改事件中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$4" Then
Application.ScreenUpdating = False
Dim x As Range, Cell As Range
Set x = Range("AALB_Exposure")
For Each Cell In x
If Cell.Value > Sheets("Overview").Range("E4").Value And Cell.Value <> "" Then ' added `AND` part to check if cell is not blank
Cell.Interior.Color = RGB(0, 255, 0)
End If
Next
End If
Application.ScreenUpdating = True
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Address=“$E$4”,则
Application.ScreenUpdating=False
尺寸x作为范围,单元格作为范围
设置x=范围(“AALB_曝光”)
对于x中的每个单元格
如果Cell.Value>Sheets(“Overview”).Range(“E4”).Value和Cell.Value”,则“添加”和“检查单元格是否为空的部分”
Cell.Interior.Color=RGB(0,255,0)
如果结束
下一个
如果结束
Application.ScreenUpdating=True
端接头
将其放入要在其上运行的工作表的工作表模块中。在添加颜色之前,它还会检查单元格是否为空