2017-05-24 1 views
0

Excel의 특정 열을 통해 특정 문자열을 검색하고 셀의 배경색이 변경된 문자열과 일치하는 조건문을 작성하려고합니다.Excel VBA 코드를 사용하여 조건부 사례문

셀이 비어 있거나 문자열과 일치하지 않으면 셀에 아무 것도 발생하지 않아야합니다.

지금 당장 열의 각 셀을 반복하고 비교할 수있는 모든 가능한 문자열 값을 확인하려고 노력하고 있지만 작동하지 않는 것 같습니다. 처음 후에 반복을 중지 Exit For

Sub interiorsStatus() 

Dim sh As Worksheet 
Dim rw As Range 


Set sh = ActiveSheet 

For Each rw In sh.Rows 
Select Case sh.Cells(rw.Row, "E").Value 

    Case "DELIVERED" 
     result = Range(rw.Row).Interior.ColorIndex = 33 

    Case "READY TO ORDER" 
     result = Range(rw.Row).Interior.ColorIndex = 36 

    Case "ORDERED" 
     result = Range(rw.Row).Interior.ColorIndex = 39 

    Case "DELIVERED" 
     result = Range(rw.Row).Interior.ColorIndex = 43 

    Case "EXISTING" 
     result = Range(rw.Row).Interior.ColorIndex = 40 

    Case "ON HOLD" 
     result = Range(rw.Row).Interior.ColorIndex = 48 

    Case "GENERAL CONTRACTOR" 
     result = Range(rw.Row).Interior.ColorIndex = 2 

    Case "AV & BLINDS" 
     result = Range(rw.Row).Interior.ColorIndex = 15 

    Case "MILLWORK" 
     result = Range(rw.Row).Interior.ColorIndex = 22 

    Case Else 
     result = """" 

    End Select 

    Exit For 

     Next rw 

    End Sub 
+3

'rw.Interior.ColorIndex = 22'가하고'select case rw.cells (1,5) ' –

+2

매크로 대신 조건부 서식을 사용하지 않는 이유는 무엇입니까? – BruceWayne

+0

'For Each rw in sh.Rows'는'For each rw In sh.USEDRANGE.Rows'이거나 1,048,576 행을 조사해야합니다. 마지막 비어 있지 않은 행을 찾는 다른 방법이 있습니다. – Jeeped

답변

2

라인 :

여기에 내 현재 코드입니다. 제 생각에, 이것은 당신이 원하는 것이 아닙니다. 또는 case-statement 안에 써야합니다.

0
result = Range(rw.Row).Interior.ColorIndex = 40 

그건 과제입니다. 할당 연산자 오른쪽의 표현식 값인 result에 할당됩니다. 당신이 할당 연산자의 오른쪽에 그것이있을 때

Range(rw.Row).Interior.ColorIndex = 40 

는, 그게 True 또는 False로 평가하는 부울 식입니다. 따라서 resultColorIndex40 일 때 True이되며 그렇지 않은 경우 False이됩니다.

그리고 아무 것도 result으로 끝나지 않습니다. 실제로 ColorIndex을 설정하기위한 경우

, ColorIndex를 할당 할당 명령에 부울 식을 켭니다 result = 할당을 제거합니다.

다른 문제가 있습니다. 첫 번째 반복을 완료하기 직전에 루프를 명시 적으로 종료하십시오. 루프를 실제로 수행하려면 Exit For을 제거하십시오.

관련 문제