【发布时间】:2018-12-12 13:18:26
【问题描述】:
我需要在 Excel 2016 中编写条件格式,而不使用现有的条件格式工具。
我想写这个,例如在私人潜艇中:
对于范围 A1:A100:
- 如果值 >=1,则颜色 = 绿色
- 如果值为
适用于范围 B1:B100
- 如果值 >=3,则颜色 = 绿色
- 如果值为 0,则颜色为黄色
- 如果值为 0 或 "" 红色
我的代码。当我保存它时,在我的第二个定义范围内没有任何反应,在重新打开 Excel 工作簿之后也是如此:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngObserve As Range, rngCell As Range
Set rngObserve = Intersect(Target, Range("A1:A100"))
If rngObserve Is Nothing Then
Exit Sub
End If
For Each rngCell In rngObserve.Cells
If Not Intersect(rngCell, rngObserve) Is Nothing Then
If rngCell.Value = vbNullString Then
rngCell.Interior.Color = xlNone
ElseIf rngCell.Value < 1 Then
rngCell.Interior.ColorIndex = 3 'red
ElseIf rngCell.Value >= 1 Then
rngCell.Interior.ColorIndex = 4 'green
Else
rngCell.Interior.ColorIndex = 3
End If
End If
Next
Set rngObserve = Intersect(Target, Range("B1:B100"))
If rngObserve Is Nothing Then
Exit Sub
End If
For Each rngCell In rngObserve.Cells
If Not Intersect(rngCell, rngObserve) Is Nothing Then
If rngCell.Value = vbNullString Then
rngCell.Interior.Color = xlNone
ElseIf rngCell.Value < 1& > 0 Then
rngCell.Interior.ColorIndex = 6 'yellow
ElseIf rngCell.Value >= 3 Then
rngCell.Interior.ColorIndex = 4 'green
Else
rngCell.Interior.ColorIndex = 3
End If
End If
Next
End Sub
【问题讨论】:
-
请注意 "does not work" 不是有用的错误描述。请edit您的问题并包括:您遇到哪个错误以及在哪里?此外,
Range("A")不是有效范围,如果您的意思是 A 列,它必须是Range("A:A")或Columns("A")。MyPlage As Range缺少Dim。你也可以看看Select...Case Statement。 -
您的代码甚至无法编译,因为您缺少
End If。如果要使用WorksheetChange,则不能更改名称,必须将其放在相关的工作表模块中。
标签: excel vba conditional-formatting