ExcelVBA运用Excel的【条件格式】(五) |
FormatConditions.Add方法 |
【问题】
在数据中,快速定位到60-80的数据
【效果】
如图
【知识点】
FormatConditions.Add`方法在VBA中用于向工作表上的某个范围添加新的条件格式规则。这个方法是`FormatConditions`集合的一个成员,而`FormatConditions`集合属于`Range`对象。这意味着你必须首先选定一个范围,然后才能调用`Add`方法来添加条件格式。
### 基本语法
RangeObject.FormatConditions.Add(Type:=XlFormatConditionType, Operator:=XlFormatConditionOperator, Formula1:=Formula1, Formula2:=Formula2)
### 参数:
- `Type` 是必需的参数,指定条件格式的类型,可以是以下常量之一:
- `xlCellValue`:基于单元格的值。
- `xlExpression`:基于公式表达式。
- `xlColorScale`:基于颜色比例尺。
- `xlDataBar`:基于数据条。
- `xlIconSet`:基于图标集。
- `xlTop10`:基于前10个或后10个(或百分比)。
- `xlUniqueValues`:基于唯一值或重复值。
- `xlDuplicateValues`:基于重复值。
- `xlContainsBlanks`:基于空白单元格。
- `xlNotContainsBlanks`:基于非空白单元格。
- `xlContainsErrors`:基于错误单元格。
- `xlNotContainsErrors`:基于无错误单元格。
- `xlCellValueGreaterThanOrEqual`:大于或等于某个值。
- `xlCellValueGreaterThan`:大于某个值。
- `xlCellValueLessThanOrEqual`:小于或等于某个值。
- `xlCellValueLessThan`:小于某个值。
- `xlCellValueBetween`:介于两个值之间。
- `xlCellValueNotBetween`:不介于两个值之间。
- `xlCellValueEqualTo`:等于某个值。
- `xlCellValueNotEqualTo`:不等于某个值。
- `xlCellValueBeginningWith`:以某个文本开头。
- `xlCellValueNotBeginningWith`:不以某个文本开头。
- `xlCellValueEndingWith`:以某个文本结尾。
- `xlCellValueNotEndingWith`:不以某个文本结尾。
- `xlCellValueContaining`:包含某个文本。
- `xlCellValueNotContaining`:不包含某个文本。
- `xlCellValueDays`:基于天数(适用于日期)。
- `xlCellValueNotDays`:不基于天数(适用于日期)。
- `xlCellValueMonths`:基于月份数(适用于日期)。
- `xlCellValueNotMonths`:不基于月份数(适用于日期)。
- `xlCellValueYears`:基于年数(适用于日期)。
- `xlCellValueNotYears`:不基于年数(适用于日期)。
- `Formula1` 和 `Formula2` 是可选参数,用于提供给定类型的条件格式规则的公式。它们可以是单元格引用、数值或文本字符串。
- `Operator` 也是可选参数,用于指定比较运算符,仅当`Type`为`xlCellValue`且需要比较时才需要此参数。它可以是以下常量之一:
- `xlAnd`:用于组合两个公式。
- `xlBetween`:用于`xlCellValueBetween`类型。
- `xlEqual`:等于。
- `xlGreater`:大于。
- `xlGreaterEqual`:大于等于。
- `xlLess`:小于。
- `xlLessEqual`:小于等于。
- `xlNotEqual`:不等于。
- `xlOr`:用于组合两个公式。
### 示例
以下是一个使用`FormatConditions.Add`方法的例子,它将应用一个条件格式规则,以高亮显示所有大于50的单元格:
Sub AddCondition()
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("A1:C10")
With rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreaterThan, Formula1:=50)
.SetFirstPriority
.Interior.ColorIndex = 6 ' 设置背景颜色为红色
End With
End Sub
在这个例子中,`Type`被设为`xlCellValue`,`Operator`被设为`xlGreaterThan`,`Formula1`被设为数字50。这样,所有大于50的单元格都会被标记出来。
【我的代码】
1.下面是利用条件格式的VBA代码
Sub 条件格式定位60_80()
'
' 条件格式定位 宏
Dim ws As Worksheet
Dim rng As Range
Set ws = ActiveSheet
Set rng = ws.Range("A1:F20")
' 清除之前的条件格式
ws.Cells.FormatConditions.Delete
With rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=60", Formula2:="=80")
.Interior.Color = RGB(255, 255, 0)
' 设置背景色为黄色
End With
End Sub
2.下面利用常规的数据检测的VBA代码
Sub GoToValuesBetweenXAndY()
Dim ws As Worksheet
Dim cell As Range
Dim x As Double, y As Double
x = 10 ' 设定x值
y = 20 ' 设定y值
Set ws = ActiveSheet ' 或者指定工作表
For Each cell In ws.UsedRange.Cells
If Not IsError(cell.Value) And IsNumeric(cell.Value) And cell.Value >= x And cell.Value <= y Then
' Application.Goto cell, True
' Exit Sub ' 找到第一个符合条件的就退出
cell.Interior.Color = RGB(255, 255, 0)
End If
Next cell
' MsgBox "没有找到介于 " & x & " 和 " & y & " 之间的数值数据"
End Sub
====若有用,请转发,大家免费学习====
关注看更多文章