我想在VBA中使用基于特定条件的高亮显示功能。我可以很容易地通过条件格式来做到这一点,但我注意到,如果用户剪切/粘贴(非特殊)/删除行/等。然后修改条件格式范围。我希望条件格式范围保持固定而不是映射到实际单元格。如果有人知道如何做到这一点,或保护条件格式,但仍然允许数据操作,那么这个代码将是不必要的。根据日期和其他条件突出显示单元格
我发现了两种不同的代码,我一直在尝试,但由于我是VBA新手,我并不擅长并遇到问题。我不知道如何使用Isblank或Isempty功能。
我需要突出显示从现在起30天之前(包括通过日期)的日期为红色的日期。我需要突出显示从现在开始的60天之前的日期,而以黄色显示超过30天的日期。没有数据和细胞超过60天的细胞必须保持不被强调。
任何帮助,非常感谢!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim icolor As Integer
If Not Intersect(Target, Range("C3:T65")) Is Nothing Then
Select Case Target
Case Is <= Date + 60
icolor = 6
Case Is <= Date + 30
icolor = 3
Case IsEmpty()
icolor = 2
End Select
Target.Interior.ColorIndex = icolor
End If
End Sub
其他选项:
Sub Highlight()
Dim cell As Range
For Each cell In Range("C3:T65")
If cell.Value <= Date + 60 And cell.Value > Date + 30 Then
cell.Offset(0, 1).Interior.ColorIndex = 6
ElseIf cell.Value <= Date + 30 Then
cell.Offset(0, 1).Interior.ColorIndex = 3
ElseIf cell.Value IsEmpty() Then
cell.Offset(0, 1).Interior.ColorIndex = 2
End If
Next cell
End Sub
我得到一个编译错误:“Case without Select Case”和“Case cell”突出显示。 我在某处插入“Do Select”吗? – user2214690 2013-03-27 22:25:42
我在“Case cell”之前插入了“Select”并且它工作正常。但是,现在我有一个问题: 如果我选择一个单元格并点击“Backspace”,则单元格变为黄色,尽管它是空的。另外,'Case Is <= Date + 60'覆盖'Case Is <= Date + 30'。关于如何使黄色包含从>日期+30到<=日期+60的任何想法? – user2214690 2013-03-27 22:32:15
我明白了。我以相反的顺序重新安排了案例线,并修复了它。非常感谢!! – user2214690 2013-03-27 22:35:30