我已经编写了添加条件条件的代码-但是我想重用代码,我发现我需要根据将条件应用于
的范围的起始行更改条件中的行号这是我的代码,内联了一些问题的注释
Dim RG As Range, fmtc As FormatCondition
Set RG = WS.UsedRange
我想让范围从第3行开始-这是第2行
Set RG = Range(RG.Cells(3, 1), RG.Cells(RG.Rows.Count, RG.Columns.Count))
但现在这意味着我必须增加下面的数字(即2到3和3到4)
Set fmtc = RG.FormatConditions.Add(Type:=xlExpression, Formula1:="=$f2<>$f3")
变成
Set fmtc = RG.FormatConditions.Add(Type:=xlExpression, Formula1:="=$f3<>$f4")
但是这取决于rg.row如果Excel支持它,我会使用以下内容,因为它不受RG在
上开始的行影响Set fmtc = RG.FormatConditions.Add(Type:=xlExpression, FormulaRC1:="=RC6<>R[+1]C6")
我考虑、编写并测试了以下
Function RCtoFN(Argrg As Range, rc As String) As String
Dim formsafe As String, rg As Range
Set rg = Argrg.Cells(1, 1)
formsafe = rg.Formula
rg.FormulaR1C1 = rc
RCtoFN = rg.Formula
rg.Formula = formsafe
End Function
Set fmtc = RG.FormatConditions.Add(Type:=xlExpression, Formula1:=RCtoFN(rg,"=RC6<>R[+1]C6"))
它似乎正在工作,但我不喜欢这是因为需要保存公式在rg.cells(1,1)和恢复它可以触发重新计算和可能的错误与丢失数据的结果
所以我的问题是,有没有人有办法做到这种转换从RC格式到正常格式?
作为对我正在做的事情的解释,这是为了当一列中的值从一行更改到下一行时,条件格式在行的所有单元格之间绘制一条线
With fmtc.Borders(xlBottom)
.LineStyle = xlContinuous
.Color = -16777024
.TintAndShade = 0
.Weight = xlThin
End With
Ross
您可以使用ConvertFormula
函数从R1C1转换为A1,反之亦然,但我不确定您是否真的需要它。
这将工作,因为公式可以使用A1或R1C1表示法。
Set fmtc = RG.FormatConditions.Add(Type:=xlExpression, Formula1:="=RC6<>R[+1]C6")