2015-01-28 5 views
2

C#으로 작성된 추가 기능에서 조건부 서식을 추가하는 Excel 워크 시트가 있습니다.조건부 서식 숨기기 텍스트

조건이 만족스럽고 채우기 색상을 변경할 수 있지만 텍스트가 항상 숨겨집니다.

형식에서 채우기 색을 제거하면 서식을 적용해도 여전히 텍스트가 숨겨집니다.

모든 서식을 제거하고 서식을 변경하지 않고 조건을 적용하면 텍스트는 계속 숨겨집니다.

형식 조건이 더 이상 유효하지 않으면 예상대로 텍스트가 나타납니다.

셀 값이 올바르게 올바르게 설정되었습니다.

왜 이런 일이 발생합니까?

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가]의 요청에 따라

전체 disabledFormat 문자열

: (정확히 볼이 여러 클래스에 걸쳐으로이 연결되지 않는 코드, 난 그냥 채우기에 시도했다 공백 도움이 될 수 있습니다 : $)

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) 
,536,913,632 10

더 명확히하기 위해 동일한 주소가있는 다른 워크 시트의 셀에서 값을 조회하고 해당 셀의 형식이 지정된 문자열에서 값을 가져 와서 선택한 항목에 표시된 값과 비교합니다. 드롭 다운. 일치하는 경우 TRUE가 반환됩니다.

동일한 수식을 사용하여 1 또는 0을 셀 값으로 반환하므로이 방법이 유용합니다.

[/ Edit2가]

[EDIT3] 내가 "a";;;NumberFormat, 아래로 문제가 좁혀했습니다

. 조건부 서식에서이 값이 올바르게 트리거되지 않으면 a (또는 Webing이 적용된 눈금)이 표시됩니다. 그러나 조건부 서식에서 NumberFormat의 출력이 나타나면 나타나지 않습니다. 이것은 수식입니다이 그래서 난이 Excel에서 버그가 추측하고있어 의도적 왜 내가 생각할 수 없다,하지만 난

[/ 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) 
+0

그냥 같은 색깔없는 당신이 숨겨져 확신을 표시 한 것입니다 반환하도록 변경 제안? (또는 매우 닮은 색으로 숨겨진 것처럼 보임) – musefan

+0

아니요, 사실 일 수 있습니다. 그러나 글꼴 색을 아무 것도 설정해도 아무런 차이가 없습니다. 셀을 over-type으로 타이핑하면 텍스트를 볼 수 있지만 셀을 떠날 때 사라집니다. – CompanyDroneFromSector7G

+0

나는 글꼴 색깔이 동일하지 않다는 것을 100 % 확신한다. 색상을 변경하지 않으면 문제가 계속 발생합니다. – CompanyDroneFromSector7G

답변

1

숫자 형식의 정의는 ;

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

전화 번호 형식 "a";;;으로 구분 된 네 개의 필드 인 값 경우 의미 : 그 당신을 도움이된다면 이 매크로입니다 긍정적 인 디스플레이 a, 0이면 음수 또는 텍스트가 표시되지 않습니다.

수식은 텍스트로 처리되는 TRUE 또는 FALSE을 반환하므로 조건이 실행되면 형식이 셀 값을 숨 깁니다.

나는 당신의 공식 1 또는 0가있는 다음 a 또는 아무것도

+0

와우 대단해! 지금 시도 중 ... – CompanyDroneFromSector7G

+0

사실 그것은 단지 조건 수식, 즉 형식이 적용되는지 여부를 결정하는 조건 수식 일뿐입니다. 실제 셀 값은 1 또는 0입니다. 그러나 응답 및 형식화에 대한 공과 감사합니다. – CompanyDroneFromSector7G

+0

@bukko 그래서 실제 셀 값은 얼마입니까? –

0

글꼴 파일에 오류가있는 것 같습니다. 포맷시 표준 문자 A-Z가 보이는지 확인하십시오. 사라지지 않으면 글꼴 파일이 손상되었을 수 있습니다. wingdings 글꼴을 덤프하고 다시 설치해야 할 수도 있습니다.

+0

조건부 서식 규칙 관리자를 사용하여 규칙을 편집하려고했지만 글꼴 목록이 비활성화되어 다른 글꼴로 수동 변경할 수 없습니다! – CompanyDroneFromSector7G

+0

하지만 정상이라고 생각합니다. 그러나 수동으로 셀 글꼴을 변경하면 예 : Tahmoa 또는 Calibri, 텍스트는 여전히 보이지 않습니다. – CompanyDroneFromSector7G

+0

수동으로 동일한 조건부 서식을 다른 셀에 추가하면 (예 : C#을 사용하지 않는 경우) 모두 정상적으로 나타납니다. 조건부 서식을 C# 코드로 추가 할 때만 문제가됩니다. – CompanyDroneFromSector7G

1

은 내가 매크로 기록에서 가져온 것입니다의 PatternColorIndex이 필요한 아닌지 모르겠어요이

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

를 사용해보십시오.

편집

:

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 
+0

ThemeColor 제안에 감사드립니다. 나는 그것을 시도했지만 결과는 동일합니다. Add-in에서 C# 코드를 사용해야하므로 불행히도 매크로는 좋지 않습니다. – CompanyDroneFromSector7G