下拉列表选择已更改 - 单元格变灰
dropdownlist selection changed - grey out cells
嗨,我是新来的,我只需要一些指导来解决我遇到的问题。我有一个 excel 文件,并且在 AA
列中有一个下拉列表(是或否),我知道有条件格式会更改行的颜色。但是我有 3000 行。
我想要发生的是当用户 select 在 No
上时,它会将整行变灰。有没有简单的方法。因为如果我将条件格式 1 乘 1 地进行,这将需要一些时间。
例如,如果用户在 AA4
select 上没有下拉。它会变灰 AB4 - AK4
您不会逐行应用此规则。相反,将其应用于一行,然后将规则的范围扩展到所需的范围。虽然您可以在 VBA 中执行此操作,但这绝不是必需的。
导航至 Conditional Formatting > New Rule > Use a formula to determine which cells to format
.
,使用公式设置条件格式
您的公式应引用感兴趣的列(在我的示例中为 Column A
,在您的示例中为 Column AA
)。请确保不要锁定行引用并在此处应用您想要的格式!
完成后,导航到现有规则以修改规则适用的范围 (Conditional Formatting > Manage Rules > Select newly created rule
)。根据我的设置,应用规则的范围是 B2:F10
所以表格看起来像这样:
完成后,最后一步中提供的范围应根据您在第一步中应用的公式和格式突出显示
您可以通过两种方式使其自动化(使用 VBA):
- 为必要的范围创建条件格式,方法如下:
Sub makeCondForm()
Dim sh As Worksheet, lastRow As Long
Set sh = ActiveSheet
lastRow = sh.Range("AA" & rows.count).End(xlUp).row
With sh.Range("AB4:AK" & lastRow)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=$AA4=""No"""
.FormatConditions(.FormatConditions.count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.14996795556505
End With
End With
End Sub
- 使用 Sheet
Change
事件。请复制 sheet 代码模块中的下一个代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = Range("AA1").Column Then
If Target.Value = "No" Then
With Range(Target.Offset(0, 1), cells(Target.row, "AK")).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.14996795556505
End With
Else
Range(Target.Offset(0, 1), cells(Target.row, "AK")).Interior.Color = xlNone
End If
End If
End Sub
请注意,讨论的范围不能有任何条件格式。它必须以某种方式初始化。我的意思是,只有当您将“AA”列中的单元格值从其他内容更改为 'No'...
后,它才会起作用
嗨,我是新来的,我只需要一些指导来解决我遇到的问题。我有一个 excel 文件,并且在 AA
列中有一个下拉列表(是或否),我知道有条件格式会更改行的颜色。但是我有 3000 行。
我想要发生的是当用户 select 在 No
上时,它会将整行变灰。有没有简单的方法。因为如果我将条件格式 1 乘 1 地进行,这将需要一些时间。
例如,如果用户在 AA4
select 上没有下拉。它会变灰 AB4 - AK4
您不会逐行应用此规则。相反,将其应用于一行,然后将规则的范围扩展到所需的范围。虽然您可以在 VBA 中执行此操作,但这绝不是必需的。
导航至 Conditional Formatting > New Rule > Use a formula to determine which cells to format
.
您的公式应引用感兴趣的列(在我的示例中为 Column A
,在您的示例中为 Column AA
)。请确保不要锁定行引用并在此处应用您想要的格式!
完成后,导航到现有规则以修改规则适用的范围 (Conditional Formatting > Manage Rules > Select newly created rule
)。根据我的设置,应用规则的范围是 B2:F10
所以表格看起来像这样:
完成后,最后一步中提供的范围应根据您在第一步中应用的公式和格式突出显示
您可以通过两种方式使其自动化(使用 VBA):
- 为必要的范围创建条件格式,方法如下:
Sub makeCondForm()
Dim sh As Worksheet, lastRow As Long
Set sh = ActiveSheet
lastRow = sh.Range("AA" & rows.count).End(xlUp).row
With sh.Range("AB4:AK" & lastRow)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=$AA4=""No"""
.FormatConditions(.FormatConditions.count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.14996795556505
End With
End With
End Sub
- 使用 Sheet
Change
事件。请复制 sheet 代码模块中的下一个代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = Range("AA1").Column Then
If Target.Value = "No" Then
With Range(Target.Offset(0, 1), cells(Target.row, "AK")).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.14996795556505
End With
Else
Range(Target.Offset(0, 1), cells(Target.row, "AK")).Interior.Color = xlNone
End If
End If
End Sub
请注意,讨论的范围不能有任何条件格式。它必须以某种方式初始化。我的意思是,只有当您将“AA”列中的单元格值从其他内容更改为 'No'...
后,它才会起作用