将此条件格式转换为c#
我需要将这个确切的条件格式转换为C#。
我尝试使用下面的代码。 但是因为C5不在范围内,所以不起作用。
Range extendedRange = activeWorksheet.get_Range("D5", oOpt).get_Resize(129, 3); FormatConditions fcs = extendedRange.FormatConditions; FormatCondition fc = (FormatCondition)fcs.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlGreater, "=C5", oOpt, oOpt, oOpt, oOpt, oOpt); Interior interior = fc.Interior; interior.Color = ColorTranslator.ToOle(Color.Red);
我使用的是interop.excel 12.0.0.0。 有人能帮我解决这个问题吗? 提前致谢
编辑:我希望这是一个真正的参考。 所以,excel条件格式中显示的东西正是我想要的。 但是,当我试着用我的代码公式更改为D5而不是C5。 我认为这可能是因为我的范围没有C5单元格。 我正在使用Visual Studio 2008 SP1。
你的代码适合我。 它给你一个错误信息?
可能的原因可能是您正在使用相对单元格引用而不是绝对引用。
使用相对引用时,您input的公式将应用于select的第一个单元格(通常是左上angular的单元格)。 然后,对该范围内的每个其他单元格应用,修改单元格引用。 因此,如果公式引用了要突出显示的范围中的第一个单元格左侧的单元格,则它将引用每个单元格左侧的要突出显示的单元格。
使用绝对引用时,您input的公式将按照您input的公式应用。
例如
相对参考(单元格值> C5应用于D5:F133)
基本上,如果这个值大于直接在我左边的单元格,然后高亮显示,那么对于每个想要突出显示的单元格(例如D5:F133),都有说明。
从而确定以下单元格:
- 检查C5对C5的D5
- 检查D6对C6
- 检查D7对C7
- 检查E5对D5
- 检查E6与D6
- 等等….
使用绝对引用(单元格值> $ C $ 5应用于D5:F133)
条件会说,对于每个想要突出显示的单元格,如果该值大于单元格A1中的值,则突出显示。
从而确定以下单元格:
- 检查C5对C5的D5
- 检查D6对C5
- 检查C5对C5的D7
- 检查E5对C5
- 检查E6对C5
- 等等….
要将代码更改为使用绝对引用,只需将美元符号($)添加到所需的单元格地址,即可:
Range extendedRange = activeWorksheet.get_Range("D5", oOpt).get_Resize(129, 3); FormatConditions fcs = extendedRange.FormatConditions; FormatCondition fc = (FormatCondition)fcs.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlGreater, "=$C$5", oOpt, oOpt, oOpt, oOpt, oOpt); Interior interior = fc.Interior; interior.Color = ColorTranslator.ToOle(Color.Red);
注意$符号添加到"=$C$5"
如果这没有帮助,你可能需要更好地解释发生了什么事情。