2013-06-28 14 views
0

코드를 실행하려고하면 런타임 오류 '13': 형식이 일치하지 않습니다. 디버그는 'IF'및 'ElseIF'문을 강조하지만 실수가 어디인지는 알 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다VBA 런타임 오류 '13': 형식이 일치하지 않습니다.

Dim lColumn As Long 
lColumn = ws.Cells(2, Columns.Count).End(xlToLeft).Column 

Dim rgMonth As Range 
Dim rgTaxExp As Range 

Dim i As Long, j As Long 
Set rgTaxExp = Range(Cells(lRow, 10), Cells(lRow, lColumn)) 

Set rgMonth = Range(Cells(2, 10), Cells(2, lColumn)) 
For i = 1 To rgMonth.Rows.Count 
For j = 1 To rgMonth.Columns.Count 

If Month(date2) >= Month(rgMonth.Cells(i, j).Value) Then 'Runtime Error '13':_ 
Type Mismatch 
Cells(lRow, 9).Copy rgTaxExp.Cells(i, j) 
ElseIf Month(date2) < Month(rgMonth.Cells(i, j).Value) Then 'Runtime Error '13':_ 
Type Mismatch 
rgTaxExp.Cells(i, j) = 0 
+2

여기서/date /는 어떻게 선언/정의됩니까? – ApplePie

+0

그것은 일로 어둡게 DATE1 상기 여러 줄 선언있어 날짜 1 = .Cells (lRow 5) 날짜 날짜 2 = .Cells (lRow 6) .Value '참조 DateDiff = ("m"날짜 1로 .Value 희미한 DATE2 , date2) – user2532363

+0

코드가 실패 할 때 rgMonth.Cells (i, j)의 값은 무엇입니까? – ApplePie

답변

1
오류 메시지 상태로

, 하나 Month(date2) 또는 Month(rgMonth.Cells(i, j).Value)는 루프의 어느 시점에서 실패합니다. 오류의 원인이되는 If 문 앞에

삽입이 디버그 문 :

For j = 1 To rgMonth.Columns.Count 

Debug.Print "date2 is " & date2 
Debug.Print "rgMonth.Cells(i, j).Value is " & rgMonth.Cells(i, j).Value 

If Month(date2) >= Month(rgMonth.Cells(i, j).Value) Then 'Runtime Error '13':_ 
Type Mismatch 

이 코드를 실행합니다. 오류가 발생하면 디버그하고 직접 실행 창을 살펴보십시오. 마지막 두 줄은 오류가 발생하는 이유를 보여줍니다.

직접 실행 창을 볼 수 없으면 Visual Basic Editor에서보기 -> 직접 실행 창을 선택하여 열 수 있습니다.

관련 문제