2017-11-19 4 views
0

다음 VBA 코드를 사용하여 색상에 따라 셀 값을 변경하지만 채색 된 셀을 포함하여 선택한 모든 셀이 변경됩니다. 이 점에서 제발 도와주세요 : -셀 색상을 기반으로 Excel에서 셀의 값을 변경하십시오.

Sub ChangeValueBasedOnCellColor() 
    Dim rg As Range 
    Dim xRg As Range 
    Set xRg = Selection.Cells 
    Application.DisplayAlerts = False 
    For Each rg In xRg 
     With rg 
      Select Case .Interior.Color 
       Case Is = 16777215 
        .Value = "OFF" 

      End Select 
     End With 
    Next 
    Application.DisplayAlerts = False 
End Sub 
+0

나를 위해 ** 채색되지 않은 세포 만이 "OFF"라는 단어로 변경됩니다. – YowE3K

+0

16777215.is 컬러 인덱스 .if 그 다음 그 셀에 단어를 넣어해야 일치합니다. 하지만 제 선택의 모든 세포에서 저의 경우에는 발병합니다. –

+0

'MsgBox rg.Address & "|" & rg.Interior.Color' 문을'For Each rg In xRg'의 직후에 실행 한 다음, 변경을 기대하는 일부 셀과 동일한 상태로 유지할 것으로 예상하는 셀을 포함하는 작은 선택 영역에서 코드를 실행 해보십시오. 각 셀에 대해 표시되는 'Interior.Color'의 값을 확인하십시오. – YowE3K

답변

2

당신이 겪고있는 문제는 더/해제/기본 * 배경 색상과 명시 적으로 흰색으로 설정 배경 색상 셀과 셀 모두 을 가지고있다 동일.Interior.Color 속성 값 (16777215).

두 셀을 구별하려면 각 셀의 .Interior.ColorIndex 속성을 대신 확인해야합니다. 배경색이없는 셀은 .Interior.ColorIndexxlNone (-4142)이고 흰색 배경색이 설정된 셀은 과 같습니다. 기본 경우
* :

Sub ChangeValueBasedOnCellColor() 
    Dim rg As Range 
    Dim xRg As Range 
    Set xRg = Selection.Cells 
    Application.DisplayAlerts = False 
    For Each rg In xRg 
    With rg 
     Select Case .Interior.ColorIndex 
     Case Is = 2 
      .Value = "OFF" 
     End Select 
    End With 
    Next 
    Application.DisplayAlerts = False 
End Sub 

참고 :

따라서, 귀하의 코드는 제대로 OFF에 "화이트"색상 셀의 값을 설정하기 위해 다음과 같이 변경해야 배경색이 흰색이 아니면 .Interior.Color 속성 값은 이고 여전히 흰색입니다. 기본 셀 색상을 "변경"하는 유일한 방법은 컬러 배경 이미지를 추가하는 것입니다. 기본 셀의 배경색은 설정되지 않은 상태로 유지됩니다.

관련 문제