excel - 应用条件格式后如何删除它?
问题描述
如果最后一个单元格包含“已取消”一词,我有一个工作表更改宏,它会突出显示一行中的前 8 个单元格。这工作正常。但是,“取消”一词位于下拉菜单中,如果您不小心选择了它,宏就会启动。如果您在同一单元格中更改为另一个词,我希望它删除条件并恢复正常。有人可以帮我解决这个问题。我确定这是我想念的简单事情。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrHandler
If UsedRange.Rows.Count > 0 Then
If Trim(Cells(Target.Row, Target.Column)) <> "" And _
UCase(Cells(Target.Row, Target.Column)) = "CANCELLED" Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = vbRed
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Font.Color = vbWhite
ElseIf Trim(Cells(Target.Row, Target.Column)) <> "" And _
UCase(Cells(Target.Row, Target.Column)) <> "CANCELLED" Then
Cells.FormatConditions.Delete
End If
End If
ErrHandler:
'
End Sub
解决方案
您不会“应用”和“删除”。你在这两种情况下都“应用”,只是你应用了不同的颜色。
Private Sub Worksheet_Change(ByVal Target As Range)
Const TriggerClm As Long = 8 ' change to suit
Dim TriggerRng As Range
Dim TargetRng As Range
Dim IntCol As Long
' Here the first row is 2, presuming row 1 contains captions
Set TriggerRng = Range(Cells(2, TriggerClm), Cells(Rows.Count, TriggerClm).End(xlUp))
If Not Application.Intersect(Target, TriggerRng) Is Nothing Then
With Target
Set TargetRng = Range(Cells(.Row, TriggerClm - 7), Cells(.Row, TriggerClm))
If StrComp(CStr(.Value), "cancelled", vbTextCompare) Then
TargetRng.Interior.Pattern = xlNone
TargetRng.Font.Color = vbBlack
Else
TargetRng.Interior.Color = vbRed
TargetRng.Font.Color = vbWhite
End If
End With
End If
End Sub
请注意,我推断只有在第 8 列中的单元格发生更改时才能触发更改,因为只有该单元格被“取消”或不被“取消”。在这方面,我的代码逻辑与您的逻辑不同。
推荐阅读
- php - PHP 添加数字 1-10 并且仅添加偶数 1-10。用一个循环分别显示总和
- postgresql - 如何解决 PostgreSQL“中止(核心转储)”错误?
- python - 无法在 Win 7 64 位的 Python 3.4 中安装 Pandas
- c# - 具有泛型属性的类必须是泛型的?
- r - 如何将动态列名传递给 h2o 排列函数
- python - VSCode 集成终端未加载 Django
- google-cloud-platform - 通过 GCP 部署管理器使用 GKE 测试版功能
- c# - 将 DataTable 写入 csv 代码 break for loop
- razor - Net core 2.0 - Razor Pages 部分视图与业务本身(不是 MVC)
- c# - System.ComponentModel.DataAnnotations 在属性和封装字段上的有效放置