条件格式隐藏文本

我有一个Excel工作表,我正在用C#编写的加载项添加条件格式。

条件激发好,我可以改变填充颜色,但文本总是隐藏。

如果我从格式中删除填充颜色,则在应用格式时,文本仍然隐藏。

如果我删除所有的格式,只是应用条件没有任何格式的变化,文本仍然是隐藏的。

格式条件不再有效时,文本显示为您所期望的。

单元格值是绝对正确设置的。

为什么会这样呢?

C#代码如下:

var disabledFormat = "IF(blah blah...),FALSE,TRUE)"; var formatCondition = (Excel.FormatCondition)cell.FormatConditions.Add( Excel.XlFormatConditionType.xlExpression, Type.Missing, disabledFormat); formatCondition.Font.Color = ColorTranslator.FromHtml("#C0C0C0"); formatCondition.Interior.Color = ColorTranslator.FromHtml("#F0F0F0"); 

[编辑]

我已经尝试将颜色更改为白色,黑色,红色等,但条件格式适用时仍然不可见。

[/编辑]

[EDIT2]

完整的disabledFormatstring请求︰(代码看起来不完全链接,因为它跨越了几个类,我只是试图填补空白是有帮助的:$)

 const string FORMAT_DISABLED = "=IF(LEFT(MID('{2}'!{0},FIND(\"|\",'{2}'!{0},FIND(\"|\",'{2}'!{0})+1)+1,999),LEN(INDIRECT(\"'$lookup_grading'!\"&ADDRESS({1},1))))=INDIRECT(\"'$lookup_grading'!\"&ADDRESS({1},1)),FALSE,TRUE)"; var dropdownCell = "Q5"; var disabledFormat = string.Format(FORMAT_DISABLED, cellName, dropdownCell, controlSheetName); 

解决:

 =IF(LEFT(MID('$controls_Distribution Grid'!W19,FIND("|",'$controls_Distribution Grid'!W19,FIND("|",'$controls_Distribution Grid'!W19)+1)+1,999),LEN(INDIRECT("'$lookup_grading'!"&ADDRESS(Q5,1))))=INDIRECT("'$lookup_grading'!"&ADDRESS(Q5,1)),FALSE,TRUE) 

为了进一步澄清,它会做的是在另一个工作表中的单元格中查找具有相同地址的值,并从该单元格中的格式化string中获取值,并将其与下拉列表中所选项目指示的值进行比较。 如果有匹配返回TRUE

同样的公式也用于返回10的单元格值,所以我知道这工作正常。

[/ EDIT2]

[EDIT3]

我把问题缩小到了NumberFormat ,它是"a";;; 。 条件格式不触发时,正确显示(或应用Webdings的勾号)。 但是,当条件格式触发NumberFormat的输出不会出现。 我想不出为什么这是故意的,所以我猜这是Excel中的一个错误,但我会做一些谷歌search来检查

[/ EDIT3]

这是在单元格中返回1或0的公式(希望它足够清楚!):

 =IF( LEFT( MID('$controls_Distribution Grid'!$V$19, FIND("|",'$controls_Distribution Grid'!$V$19, FIND("|",'$controls_Distribution Grid'!$V$19)+1 )+1,999), LEN(INDIRECT("'$lookup_grading'!"&ADDRESS(Q5,1))) )=INDIRECT("'$lookup_grading'!"&ADDRESS(Q5,1)), 1,0) 

数字格式的定义是由四个字段分隔;

 <POSITIVE>;<NEGATIVE>;<ZERO>;<TEXT> 

你的数字格式"a";;; 意味着如果值是正数则显示a ,如果为零,则负数或文字不显示。

您的公式返回TRUEFALSE ,这些都被视为文本,所以当您的条件触发时,格式将隐藏单元格值。

我build议你改变你的公式返回10 ,然后将显示a或没有

尝试使用这个

 formatCondition.Font.ThemeColor = ColorTranslator.FromHtml("#909090"); formatCondition.Interior.ThemeColor = ColorTranslator.FromHtml("#F0F0F0"); formatCondition.Interior.PatternColorIndex = xlAutomatic; 

我不知道PatternColorIndex是否有必要,这是我从macros观录音中得到的。

编辑:这是macros,如果这可以帮助你:

 With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.499984740745262 End With With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.149998474074526 .PatternTintAndShade = 0 End With 

这听起来像可能是字体文件中的错误。 尝试一个标准的字符AZ来看它它格式化时会消失。 如果它不消失,那么你可能有一个损坏的字体文件。 可能需要转储wingdings字体并重新安装。