0

我一直在这一天作战,无法弄清楚它为什么会发生。条件格式错误5,语法错误和请求使用“=”

每当我使用VBA添加一个新的条件格式(并且因为通过Excel的GUI),它不会让我编写一个基于该行第一个单元格中的文本突出显示行的公式。不,让这个更令人困惑的是,我在后面的子代码中做了几乎相同的代码(使用不同的文本),但Excel不会给我一个错误。

下面给我一个运行时错误“5”无效的过程或参数

Range("A10", Range("A10").Offset(ItemsCount - 1, CLPCount + 2)).Select 
Selection.FormatConditions.Delete 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF($A10=""Duplication"",TRUE,FALSE)" 
Selection.FormatConditions(1).Interior.ColorIndex = 3 
Selection.FormatConditions(1).Font.ColorIndex = 2 
Selection.FormatConditions(1).StopIfTrue = False 

和说我应该通过使用“=”用它,当我尝试运行它告诉码我有一个语法问题。

Range("A10", Range("A10").Offset(ItemsCount - 1, CLPCount + 2)).Select 
    Selection.FormatConditions.Delete 
    Selection.FormatConditions.Add(Type:=xlExpression, Formula1:="=IF($A10=""Duplication"",TRUE,FALSE)") 
    Selection.FormatConditions(1).Interior.ColorIndex = 3 
    Selection.FormatConditions(1).Font.ColorIndex = 2 
    Selection.FormatConditions(1).StopIfTrue = False 

然后,如果我从公式中删除绝对引用列的$,它没有问题但没有提供所需的函数。如果我把“围绕单元格参考”相同的东西

=================================== ========================================

非常感谢那些 除了我,我们都没事,我错了,没错......这是我运行Excel的方式,Excel运行在R1C1的公式模式下,所以问题在于公式中使用的单元格引用样式用于在此模式下使用Excel时的条件格式化。

回答

0

将公式行更改为:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A10=""Duplication""" 

我怀疑无论出于何种原因,公式字符串根据您的区域设置无效 - 例如,您应该使用分号而不是逗号。

+0

我刚刚写了一个答案。 它让它通过,但公式不会突出显示该行。 – Digitourist

+0

它在这里完美运作。您确定A中的单元格没有前导或尾随空格吗? – Rory

+0

他们没有任何东西,但“Ok”或“Duplication”,因为它是一个选择文本的公式,然后例程继续将公式的输出转换为静态文本。 – Digitourist

0

我不是100%的问题。我改写你的代码为:

Sub conditionalFormatting() 
Range("A10", Range("A10").Offset(0, 10)).Select 
With Selection.FormatConditions 
    .Delete 
    .Add Type:=xlExpression, Formula1:="=IF($A10=" & Chr(34) & "Duplication" & Chr(34) & ",TRUE,FALSE)" 
End With 
With Selection.FormatConditions(1) 
    .Interior.ColorIndex = 3 
    .Font.ColorIndex = 2 
    .StopIfTrue = False 
End With 
End Sub 

(改变了偏移硬编码值),它似乎做了什么程序是应该做的(如果$ A10是“复制”标记的区域红色?)。你能进一步阐述一下吗?

+0

我不确定我可以。 整个例程对2个报表进行一系列检查。在这种情况下,我不能只检查重复项并假定一个操作,所以我必须突出显示并停止用户输入。列A声明行是OK还是Duplication。所以条件格式使用它来知道该行是否应该用白色文本格式化为红色。 由于每当例行程序运行时范围不同,我无法硬编码它正在添加条件的区域。 – Digitourist

+0

刚刚尝试强制偏移硬编码值,我没有得到任何不同的东西。 – Digitourist

0

正如编辑中对原始问题所述。

问题源于Excel选项中选择的引用样式。使用R1C1引用样式时,它不会允许您在条件格式的公式中使用A1引用样式。