运行时错误13类型不匹配条件格式

时间:2015-07-09 20:13:45

标签: excel vba excel-vba

我有代码:

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类型不匹配条件格式,我不知道为什么,任何想法?

2 个答案:

答案 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样式。两种风格都被接受。