2013-06-08 2 views
0

을 CHAGE하지 않습니다 (내가 조건부 서식을 사용하지 않으려는)엑셀 VBA 내가 이해할 필요가 세포 컬러

Function myCheck(ToVerify As Range, RightValue As Range) As Boolean 
    Dim rng1 As Range 
    Dim rng2 As Range 

    For Each rng1 In ToVerify.Cells 
     For Each rng2 In RightValue.Cells  
      If (rng1.Value <> rng2.Value) Then 
       rng1.Interior.Color = RGB(255, 0, 0) 
       'rng1.Cells.Interior.Color = RGB(0, 255, 0) 
       'rng1.Cells.Interior.ColorIndex = 10 
       'rng1.Interior.ColorIndex = 10 
      End If 
     Next rng2 
    Next rng1 

    SignIfError = True 

End Function 

난이 만든 행의 어느 셀 (ToVerify)에 특정 셀 (RightValue)의 값이 같지 않은지 확인하는 코드입니다. 이 셀을 볼 수있게해야합니다. 그런 다음 배경색을 변경하려고 생각했습니다. 문제는 Excel이이 셀의 배경색을 변경하지 않는다는 것입니다. 나는 세포 값이 If 문에 대한 조건을 만족시킬 것이라고 확신한다. 주석 처리 된 IF 문으로의 라인은 다른 시도이지만이 중 아무 것도 작동하지 않습니다.

어디에서 잘못 했습니까?

+0

합니까를'RightValue' 둘 이상의 셀을 포함합니까? –

+0

VBA에 정의 된 것을 포함하여 Excel 함수는 값만 반환하고 색상과 같은 셀 속성은 수정할 수 없습니다. ** 내 [대답] 참조 (http://superuser.com/questions/602216/how-do-you-write-an-excel-formula-that-will-paste-a-specific-value-in-a- differen/602928 # 602928) ** WorkUser에 대한 SuperUser 사용자 질문. – chuff

+0

@chuff, 그건 내가 생각하는 User Defined Functions (UDF)에 대해서만 사실입니다. –

답변

1

RightValue는 하나의 값으로 전체 범위가 아니라고 가정합니다. 이 경우, 이것은 당신이 원하는 것을 할 수 있습니다 나는 SubFunction에서 변경했습니다

Sub myCheck(ToVerify As Range, RightValue As Variant) 
Dim cell As Range 

For Each cell In ToVerify.Cells 
    If cell.Value <> RightValue Then 
     cell.Interior.Color = RGB(255, 0, 0) 
    'else make it white 
    Else 
     cell.Interior.Color = RGB(255, 255, 255) 
    End If 
Next cell 
End Sub 

참고. 반환 값이 필요없는 것 같습니다. 또한 SignIfError = True를 없애 버렸습니다. 이는 Function에만 필요합니다.

이처럼 호출 할 수 있습니다

myCheck ActiveSheet.Range("A1:A5"), 3 

당신이 RightValue의 셀에 값을 사용하여 호출 할 경우, 다음과 같이 호출 것 :

myCheck ActiveSheet.Range("A1:A5"), ActiveSheet.Range("B1").Value