我需要将这种确切的条件格式转换为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。
答案 0 :(得分:1)
您的代码适合我。它给你一个错误信息吗?
可能的原因可能是您使用的是相对单元格引用而非绝对引用。
使用相对引用,您输入的公式将应用于选择的第一个单元格(通常是左上角的单元格)。然后,对于要应用的范围中的每个另外的单元,修改单元引用。因此,如果公式引用要突出显示的范围内第一个单元格左侧的单元格,则它将引用要突出显示的每个单元格左侧的单元格。
使用绝对引用时,您输入的公式将在您键入时完全应用。
例如
使用相对参考(单元格值> C5应用于D5:F133)
基本上,如果这个值大于我左边的单元格然后突出显示,那么你所拥有的就是你要突出显示的每个单元格(例如D5:F133)。
因此确定以下细胞:
绝对参考(单元格价值> $ C $ 5适用于D5:F133)
条件会说,对于要突出显示的每个单元格,如果此值大于单元格A1中的值,则突出显示。
因此确定以下细胞:
要更改代码以使用绝对引用,您只需将美元符号($)添加到所需的单元格地址,即:
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"
如果这没有帮助,您可能需要更好地解释发生的事情。