2014-05-19 3 views
0

그래서 내가 틀렸을지라도 VBA에서 셀 그룹을 포맷하는 것은 비교적 간단하다고 생각했습니다. 내 목표는 특정 값이 다른 셀에 입력되지 않으면 셀 그룹을 검게하는 것입니다. 내가 겪고있는 문제는 글꼴의 서식이 어떤 이유로 작동하지 않는다는 것입니다. 내가 원하는대로하는 매크로에서 VBA를 복사하는 것으로까지 갔지만 항상 글꼴 섹션에서 작동합니다. 채우기 색상은 검정색이어야하지만 글꼴 섹션에서 오류가 발생합니다 : "응용 프로그램 정의 또는 객체 정의 오류" 다음은 매크로 레코더에서 생성 된 코드입니다 (내 수식이 추가됨). 성공적으로 녹화 후 실행하려고 :VBA 글꼴 Excel의 조건부 서식

Range(Cells(35, 9 + (11 * (Range("OptionCount").Value + 1))), Cells(40, 9 + (11 * (Range("OptionCount").Value + 1)))).Select 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$" & Ltrs & "$33 <>" & """Custom" & Range("OptionCount").Value & """" 
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
    .PatternColorIndex = xlAutomatic 
    .ThemeColor = xlThemeColorLight1 
    .TintAndShade = 0 
End With 
With Selection.FormatConditions(1).Font 'Error Here 
    .ThemeColor = xlThemeColorLight1 
    .TintAndShade = 0 
End With 

이미 세포에 3 개 이상의 조건부 서식이 있다고 할 수있는 문제의 원인을 생각할 수 있지만, 그런 경우라면 내가 생각 할 유일한 것은 채우기 색상은 작동하지 않지만 작동하지 않습니다.

답변

0

나는 원래의 문제에 대한 해결책을 가지고 있지만 다른 문제가 발생했습니다. 이 2 개의 잠수함은 사용자가 묻는 것을 수행하지만 특정 상황에 적응하기 위해 약간의 조정이 필요합니다. sub del_format은 주어진 범위에 존재하는 모든 서식을 지우므로주의해야합니다.

처음에는 전체 범위에 대한 규칙을 만들었지 만 일부 셀에만 반응했습니다. 이 하위는 범위 내의 모든 셀을 반복하고 각 셀에 서식을 적용합니다. 문제는, 내 테스트에서 각 열의 두 번째 행을 건너 뜁니다. 나는 정직하게 이유를 모른다. 아마도 전문가 중 일부는 반응 할 수 있습니까?

Option Explicit 

Sub jzz() 
Dim c As Range 
Dim testRange As Range 
Dim fCon As FormatCondition 

Set testRange = Range("D1:H20") 

Call del_format(testRange) 

For Each c In testRange.Cells 
    Set fCon = c.FormatConditions.Add(Type:=xlExpression, Formula1:="=$B$1<>33") 
    With fCon.Interior 
     .PatternColorIndex = xlAutomatic 
     .ThemeColor = xlThemeColorLight1 
     .TintAndShade = 0 
    End With 
    With fCon.Font 
     .ThemeColor = xlThemeColorLight1 
     .TintAndShade = 0 
    End With 
    Set fCon = Nothing 
Next c 
End Sub 
Sub del_format(r As Range) 

Dim a As Object 
Dim c As Range 
For Each c In r.Cells 
    For Each a In c.FormatConditions 
     a.Delete 
    Next a 
Next c 

내가 여기에서 발생한 버그 (버그입니까?)가 발생하지 않기를 바랍니다.

편집 : 문제는 그래픽 문제로 보입니다. 하위를 실행하고 아래로 스크롤하면 셀이 정상적으로됩니다.

+0

트릭을하는 것처럼 보인다. 고마워! – 110SidedHexagon