2016-06-15 2 views
1

특정 셀이 조건부 서식에서 TRUE 값을 반환하는지 확인한 다음 반환되면 전체 행 (또는 한 셀만 강조 표시)을 강조 표시하려고합니다. 참된. 조건부 서식은 B 열에 있으며 전체 행을 강조 표시합니다.조건부 서식이 TRUE인지 테스트 VBA 및 전체 행 강조 표시

조건부 서식이 B 열에서 TRUE를 반환하는 경우 궁극적으로 F 열에 숫자를 추가하려고하지만 조건부 서식이 true를 반환했는지 여부를 간단히 확인할 수 있으면 그 부분을 알아낼 수 있습니다. 나는 모든 포럼, 사이트, 예제 등을 검색했는데 찾을 수는 있었지만 아직 제대로 작동하지 못했습니다.

여러 다른 인스턴스에 대해 많은 양의 데이터를 검색하기 위해 조건부 서식을 실행 중입니다. 그 방법을 알아낼 수있는 유일한 방법은 각 조건을 별도의 조건부 형식으로 실행하는 것이 었습니다.

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
"=ISNUMBER(SEARCH(""Acadia Realty Trust "",B1))" 
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
.PatternColorIndex = xlAutomatic 
.Color = 65535 
.TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
"=ISNUMBER(SEARCH(""Aimco "",B1))" 
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
.PatternColorIndex = xlAutomatic 
.Color = 65535 
.TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
"=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"",B1))" 
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
.PatternColorIndex = xlAutomatic 
.Color = 65535 
.TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 

I 단지 그것이 단순히 조건부로 동일한 시험을 점검 할 수 있다고 말할 다음은 서브 중 하나의 일부 (각 서브 약 30 조건부 형식을 가지며, 약 10 잠수정있다)입니다 거의 300 개의 다른 테스트가 있기 때문에 서식을 지정해야합니다.

UPDATE :

나는 지프가 무엇을 제안했는데, 그때는 모두 264 조건을 맞추기 위해 배열 여러 잠수함, 각 건물 아래에 댓글을 달았습니다 무엇을,하지만 난 그렇게했을 때 그것은 단지 강조 마지막 배열은 첫 번째 하위에서 충족 된 모든 조건이 아닙니다. @Jeeped 아래 제안하지만, 배열 (24 개)의 조건을 넣어 나는 동일한 코드를 사용하고, 다음과 같이 나는 11 잠수정, 그리고 내 기본 코드로 그 코드 보인다 수 있습니다

Public Sub REIT() 
range("B:B").Select 
Call A25 
Call B25 
Call C25 
Call D25 
Call E25 
Call F25 
Call G25 
Call H25 
Call I25 
Call J25 
Call K25 
End Sub 
나는 결국

두 도움을 사용하여 열을 사용하여 조건을 다시 검색하고 필요한 데이터를 합산합니다. 그러나 강조 표시에는 여전히 문제가 있습니다.

+0

어떻게이 모든 다양한 조건을 확인하는 UDF를 포함, (만약 당신이 좋아하면 당신은 숨길 수) 별도의 체크 열을 사용하는 방법에 대한, true이면 셀에 1을 반환하고 그렇지 않으면 0을 반환합니다. 조건부 서식을 사용하면 체크 열의 값이 1인지 여부 만 확인하면됩니다. –

+0

CF를 사용하여 전체 행을 직접 색칠 할 수 있습니다. 조건부 논리를 사용하여 수식으로 값을 합계 할 수 있습니다. VBA에서이 작업을 수행하려는 특별한 이유가 있습니까? 귀하의 코드로 판단하면 VBA에 익숙하지 않은 것입니다. VBA에서 채색 작업을 수행하게하려면 조건부 서식을 사용할 필요가 없습니다. 둘 중 하나만 사용하거나 둘 다 사용하지 마십시오. – teylyn

+0

@ChrisMelville, 나는 모든 조건을 검사하기에 충분히 긴 UDF를 만들기 위해 vba에 대해 충분히 알지 못합니다. – Excellerator

답변

1

배열을 작성하고 루프를 사용하십시오. With ... End With statementApplication.Selection 속성에 대한 참조를 처리 할 수 ​​있습니다. 수식과

Option Explicit 

Sub makeThreeCFrules() 
    Dim v As Long, vCFRs As Variant 

    vCFRs = Array("=ISNUMBER(SEARCH(""Acadia Realty Trust "", $B1))", vbYellow, _ 
        "=ISNUMBER(SEARCH(""Aimco "", $B1))", vbYellow, _ 
        "=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"", $B1))", vbYellow) 
    With Selection.EntireRow 
     .FormatConditions.Delete 
     For v = LBound(vCFRs) To UBound(vCFRs) Step 2 
      With .FormatConditions.Add(Type:=xlExpression, Formula1:=vCFRs(v)) 
       .Interior.Color = vCFRs(v + 1) 
      End With 
     Next v 
    End With 
End Sub 

문제는 당신이 $B1과 열을 고정하기 위해 필요한 것이 었습니다. 당신이 다른 곳에서 통합 문서의 검색 용어 목록을 넣을 수있는 경우

Alternate:

, 당신은 하나의 '역 와일드 카드 조회'로이 작업을 수행 할 수 있습니다. ! Sheet6 A2에서

enter image description here
검색어 : A4

Option Explicit 

Sub makeAllCFrules() 
    Dim v As Long, vCFRs As Variant 

    With Selection.EntireRow 
     .FormatConditions.Delete 
     With .FormatConditions.Add(Type:=xlExpression, _ 
       Formula1:="=SUMPRODUCT(--ISNUMBER(MATCH(""*""&Sheet6!$A$2:$A$4&""*"",$B1, 0)))") 
      .Interior.Color = vbYellow 
     End With 
    End With 
End Sub 

그것은 더 빈 행이 용어는 범위 검색에 포함되지 것이 매우 중요합니다. 있다면, 당신은 두 개의 와일드 카드를 찾고 모든 것을 포함하게 될 것입니다. 물론 제공된 서브 프로 시저를 수정하여 검색어가 변경 될 수있는 경우 검색어의 주소를 찾을 수 있습니다.조건부 서식 규칙

reverse_wildcard_results
는 B1 선택한 후 적용 : B99를

+0

배열에 너무 많은 연속이 있음을 말해 준다. 275 개의 조건이 있으므로 다중 배열을 작성해야합니까? 또는 10 개의 다른 잠수정처럼 달리고 그들을 공개 잠수함으로 부를 수 있습니까? – Excellerator

+0

여러 배열을 실행하려고했지만 모든 배열을 강조 표시하지 않았습니다. 위에서 언급 한 내용을 수행했을 때 옵션의 마지막 배열 만 강조 표시 한 것입니다. 왜 그런가? – Excellerator

+0

나는 그것을 이해했다. .FormatConditions.Delete 줄을 지울 필요가 있었지만 나머지 줄에는 사실이 아닌 조건부 서식을 남겨 둡니다. 모든 배열을 실행 한 후 사실 형식 만 삭제하도록 코드를 편집하는 방법을 알고 싶습니다. 고마워, 지프! – Excellerator