【发布时间】:2021-11-01 08:54:27
【问题描述】:
我编写了添加条件条件的代码 - 但是我想重用代码,我发现我需要根据我应用条件的范围的起始行来更改条件中的行号
所以这是我的代码,内联了一些关于问题的 cmets
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
【问题讨论】:
标签: vba excel-formula