|
楼主 |
发表于 2011-9-7 09:39
|
显示全部楼层
本帖最后由 hzhb14796 于 2011-9-25 11:36 编辑
6,条件格式中的R1C1样式
设置条件格式时,{:soso__18395444775934495218_4:}必须实用R1C1公式,这很重要。文档没有明确之处这一点,但如果不用R1C1公式,有时可能出问题{:soso__948410570543185247_2:},有研究发现,如果用A1公式,每对50个单元格设置条件格式,将有一个单元格出现奇怪的行为。因为将A1引用转换为R1C1引用有时存在二义性,例如,R2表示一个单元格,单可能被错误理解为整个第二行。
FormatConditions对象用于设置条件格式。每个单元格可以有3个FormatConditions,下面的代码首先删除工作表的中的条件格式,让后遍历工作表中所有的非空单元格,并应用两种条件格式。在第一种条件格式中,类型为xlExpression,这意味使用是“公式”语法。首先Foumula1指定的公式采用是R1C1表示法。第二个条件格式使用xlCellValue类型,这需要指定一个运算符和一个值。在添加条件后,为条件1和条件2设置字体的ColorIndex
Sub ApplySpecialFormattingALL()
For Each ws In ThisWorkbook.Worksheets
ws .Usedrange.FormatConditions.Delete
For Each cell In ws.Usedrange.Cells
If Not IsEmpty(cell) Then
cell.FormatConditions.Add Type:=xlExpression,Formula1:="=or(ISERR(RC),isna(RC))"
cell.FormatConditions(1).Font.Color = cell.Interior.Color
cell.FormatConditions.Add Type:=xlCellValue,Operator:=xlLess,Formula1:="0"
cell.FormatConditions(2).Font.ColorIndex = 3
End If
Next cell
next ws
End sub
一个演示条件格式的经典实例,显示包含最小值和最大值的行。代码如下:
Sub FindMinMax()
finalrow = Cells(Application.Rows.Count, 1).End(xlUp).Row
With Range("a2:i" & finalrow)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=rc7=max(c7)"
.FormatConditions(1).Interior.ColorIndex = 4
.FormatConditions.Add Type:=xlExpression, Formula1:="=rc7=min(c7)"
.FormatConditions(2).Interior.ColorIndex = 6
End With
End Sub
如果设置一个指向单元格C7或R22的条件格式,这两种格式都将失败,因为Excel将C7解释为第7列。
|
|