我有代码:
Dim Formul1 As String
Dim Formul2 As String
Formul2 = "=AND(R[1]C<=R[1]C[-1];(R[1]C+7)>R[1]C[-1])"
**Formul1 = Application.ConvertFormula(Formula:=Formul2, fromreferencestyle:=xlR1C1, toreferencestyle:=xlA1)**
With Range("$H$6:$FH$50")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:=Formul1
.FormatConditions(1).Interior.ColorIndex = 3
End With
并且它在突出显示的位置给出了错误运行时错误13类型不匹配条件格式,我不知道为什么,任何想法?
答案 0 :(得分:1)
Formul2中的问题,更改AND
条件..使用逗号而不是分号..应该没问题。
Formul2 = "=AND(R[1]C<=R[1]C[-1],(R[1]C+7)>R[1]C[-1])"
答案 1 :(得分:0)
除了在实际系统使用逗号时使用分号作为系统列表分隔符的Formul2之外,您还必须实现{{3的 RelativeTo 参数}}。无论工作表上的位置如何,具有相对单元格引用的xlR1C1样式公式看起来都完全相同。但是,xlA1样式会根据它的位置而变化。
你试图完成的事情的性质并不完全清楚,但我会巧妙地猜测你需要使用 RelativeTo:= Range(&#34; H6&#34;)作为H6是CF规则左上角的单元格适用于:。
Formul1 = Application.ConvertFormula(Formula:=Formul2, fromreferencestyle:=xlR1C1, toreferencestyle:=xlA1, RelativeTo:=Range("H6"))
您可能还希望锁定广泛的适用于:的列引用,以便只考虑G和H列,但您必须验证您在这方面的意图。
FWIW,您不必在使用xlA1风格公式创建或修改ConvertFormula method之前将其更改为xlA1样式。两种风格都被接受。