2016-06-15 5 views
0

다음은 두 날짜 사이의 연도를 계산하는 Sub입니다. 값이 셀 (i, 3)에 표시되지 않고 MsgBox로 업데이트하면 시간 값이 표시됩니다. 도움에 미리 감사드립니다.날짜가 지정된 매크로에서 내 오류는 무엇입니까? 반환 된 값은 시간 형식입니다.

Sub EE_DatedIF() 
    Dim wb1 As Workbook 
    Dim i As Long 
    Dim LastRow1 As Long 
    Dim yrDiff As Long 
    Dim d1 As Date 
    Dim d2 As Date 

    Set wb1 = Workbooks("macro all client v.01.xlsm") 

    LastRow1 = wb1.Sheets("Carrier").range("E:E").Find("", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

    For i = 10 To LastRow1 
     d1 = wb1.Sheets("Settings").Cells(i, 1) 
     d2 = wb1.Sheets("Carrier").Cells(i, 24) 
     yrDiff = DateDiff("yy", d1, d2) 
     wb1.Sheets("Settings").Cells(i, 3) = yrDiff 
    Next i 
End Sub 
+0

'yrDiff = DateDiff ("yyyy", d1, d2)'로 올바른 결과를 얻었습니까? 'On Error Resume Next'에서 실행 중입니까? 'yrDiff'는 Long이고 시간을 잘못 재생할 수 있습니다. – Jeeped

답변

1

다른 문제점 중에서도 열 E에서 마지막으로 채워진 행을 검색하려는 시도는 신뢰할만한 것으로 간주되어서는 안됩니다. 이것에 더 가까운 것을 사용하는 것이 더 낫습니다.

With wb1.Sheets("Carrier").Range("E:E") 
    lastRow1 = .Find("*", after:=.Cells(1), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
End With 
+0

셀 참조 (i, 1)을 (1,1)로 업데이트하고 *를 제거했습니다. 현재 예상대로 작동하고 있습니다. 다시 한번 감사드립니다. –