2012-01-08 2 views
1

VBA에 익숙하지 않지만 3 가지 이상의 조건부 서식을 허용하도록 Excel을 변경해야했습니다.VBA 오류 13 형식 : 불일치

나는 아래 코드를 온라인에서 발견했으며 6 가지 값 중 하나를 선택하여 내용에 따라 셀의 색을 변경하려고합니다.

내 코드는 다음과 같습니다

Private Sub Worksheet_Change(ByVal Target As Range) 
    Set MyPlage = Range("G3:AG115") 

    For Each Cell In MyPlage 
    If Cell.Value = "." Then 
     Cell.Interior.ColorIndex=28 
     Cell.Font.Bold = True 
    End If 

    If Cell.Value = "X1" Then 
     Cell.Interior.ColorIndex=32 
     Cell.Font.Bold = True 
    End If 

    If Cell.Value = "1X" Then 
     Cell.Interior.ColorIndex=6 
     Cell.Font.Bold = True 
    End If 

    If Cell.Value = "2X" Then 
     Cell.Interior.ColorIndex=45 
     Cell.Font.Bold = True 
    End If 

    If Cell.Value = "3X" Then 
     Cell.Interior.ColorIndex=4 
     Cell.Font.Bold = True 
    End If 

    If Cell.Value = "XY" Then 
     Cell.Interior.ColorIndex=44 
     Cell.Font.Bold = True 
    End If 

    If Cell.Value = "bt" Then 
     Cell.Font.ColorIndex=27 
     Cell.Interior.ColorIndex=27 
    End If 

    If Cell.Value = "bl" Then 
     Cell.Font.ColorIndex=28 
     Cell.Interior.ColorIndex=28 
    End If 

    If Cell.Value <> "bt" And Cell.Value <> "bl" And Cell Value <> "." And Cell.Value <> "X1" And Cell.Value <> "1X" And Cell.Value <> "2X" And Cell.Value <> "3X" And Cell.Value <> "XY" Then 
     Cell.Interior.ColorIndex=xlNone 
    End If 
    Next 
End Sub 

내용은 BT와 BL이 행이 강조 표시되어 있는지 확인하려면 기록 된 다른 드롭 다운 목록에서 또는 중 하나를 선택한다.

콘텐츠를 변경하려고 시도하면 Error: 13 Type Mismatch이됩니다.

라인

If Cell.Value = "." Then 

오류 소스로 강조 표시됩니다 (나는 다음 지침의 설정

If Cell.Value = "X1" Then 

는 강조 표시하는 선을 제거하면 문제가 "." 함께하지만 줄 알았는데)

내가 봤는데 당신이 할 수있는 루프를 할 수있는 오류 Then Next, 나는 정확히 어떻게이 코드를 작성하고 난 woul d는 빠른 수정보다 코딩 문제를 해결합니다.

내가 잘못하고있는 부분에 대한 아이디어가 있다면/훌륭한 해결책이 될 것입니다. 당신이 (예 #NA#DIV/0 등) 시트에 오류 값이있는 경우

+1

이 오류의 원인은 무엇입니까? 암시 적 및 명시 적 변수 선언을 사용하여 다양한 유형의 내용을 시도했지만이 오류를 재현 할 수 없습니다. – GSerg

+0

xl03은 3 가지 조건부 형식으로 제한되어 있다고 가정합니다 (해결 방법이 있지만). – brettdj

+1

질문에 대한 답변이 아니지만 'For Each Cell In My Target'을 선택하는 동안 'For Each Cell In MyPlage'를 선택하는 이유는 무엇입니까? –

답변

2

편집

다음 If Cell... 라인이 실패합니다

변경 그것에 셀에 무엇

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim Cell as Range 
    Set MyPlage = Range("G3:AG115") 
    For Each Cell In MyPlage.Cells 
     If Not IsError(Cell) Then 
      If Cell.Value = "." Then 
       Cell.Interior.ColorIndex=28 
       Cell.Font.Bold = True 
      End If 

      etc 

     End If 
    Next 
+0

그게 문제를 해결해 줘서 고마워. –

+0

@ 제니 당신이 만족 스럽다는 대답을 받으면 tou는 그것을 받아 들여야합니다. (틱 클릭) [Meta] (http://meta.stackexchange.com/q/5234/159408)를 참조하십시오. –

관련 문제