我正在尝试根据某些条件在 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