2016-10-21 4 views
0

나는이 코드를 가지고 서식 :휴가 셀은 그대로

With .Cells(i, 4) 
    If .Value > 0.8 Then 
     .Interior.Color = RGB(237, 67, 55) '<-- Red color 
     .Font.Color = vbWhite 

     ElseIf .Value > 0.6 Then 
      .Interior.Color = RGB(255, 190, 0) '<-- Amber Colour 
      .Font.Color = vbWhite 

     ElseIf .Value2 = "---" Then 
      .Interior.Color = .Interior.Color 

     Else 
      .Interior.Color = RGB(50, 205, 50) '<-- Green color 
      .Font.Color = vbWhite 
    End If 
End With 
워크 시트는 이미 기본적으로 행 색상을 번갈아하지만 내부 세포 색상이에 계류중인 변경할 필요가있는 셀의 값을 보류하도록 포맷

셀의 값이지만 일부 셀에는 숫자 데이터가없고 단지 "---"이 있습니다. 이 경우 원래 형식이 코드를 실행하기 전의 상태로 유지되기를 원합니다.

기본적으로 셀에 "---"이 포함되어 있으면 다른 내부 색을 지정하지 않고 이미 지정된 색을 유지합니다.

+0

그렇다면 "---"을 확인하는 if 문의 세 번째 단계에 도달하면 어떻게됩니까? – tjb1

+0

@ tjb1 아무 것도 없다. 단지 다음 문장으로 간 다음 "---"셀 내부를 적색으로 채색한다. –

+0

. 행운과 함께 .value와 .value2를 사용해 보았습니다. –

답변

1

나는 이것을 테스트했으며 내 테스트 데이터에서 작동하는 것처럼 보였습니다. 어떤 이유로 엑셀은 "---"을 0.8보다 큰 값으로 처리하기 때문에 "---"에 대한 체크를 먼저 이동하면이 작업이 중단됩니다.

With .Cells(i, 4) 
    If .Value = "---" Then 
      .Interior.Color = .Interior.Color 

     ElseIf .Value > 0.8 Then 
      .Interior.Color = RGB(237, 67, 55) '<-- Red color 
      .Font.Color = vbWhite 

     ElseIf .Value > 0.6 Then 
      .Interior.Color = RGB(255, 190, 0) '<-- Amber Colour 
      .Font.Color = vbWhite 

     Else 
      .Interior.Color = RGB(50, 205, 50) '<-- Green color 
      .Font.Color = vbWhite 

    End If 
End With 
+0

그게 다야! ... 전에 읽지 않는 이유는 모르겠다. 귀하의 코드가 닦 았지 만 그것은 원래의 포맷 색상을 소매하지 않았기 때문에 다음 코드를 추가 했으므로 작동했습니다 : 'If .Value = "---"Then If .Interior.Color <> vbWhite Then .Interior.Color = RGB (220, 230, 241) End If' –