2014-07-10 5 views
0

해결할 수없는 간단한 문제가 있습니다. A 열에있는 Excel 통합 문서에는 날짜가 있습니다. 이 날짜 집합에서 특정 날짜 (가장 최근 날짜)를 찾고 날짜의 행 번호를보고 싶습니다. 날짜를 찾을 수는 있지만 행 번호는 찾지 못합니다. 내가 지금까지했던 것은 :VBA에서 WorksheetfFnction.match를 사용하는 중에 오류가 발생했습니다.

Option Base 1 
Option Explicit 

Sub Macro() 

Dim maxdate As Date 
Dim k As Integer 
Dim row As Integer 

maxdate = WorksheetFunction.Max(Range("A:A")) 

If maxdate < VBA.Date And maxdate > 0 Then 
    row = Application.WorksheetFunction.Match(maxdate, Range("A:A"), 0) 
    k = row 
End If 

If maxdate = 0 Then 
    k = 0 
End If 

End Sub 

이 포함 된 코드의 라인은 "행 = Application.WorksheetFunction.Match()"실행 VBA 오류보고하면 런타임 오류 '1004': 가져올 수 없습니다 worksheetfunction 클래스의 match 속성.

그러나 정확한 maxdate가보고됩니다. 나는 어떤 의견을 주셔서 감사합니다?

BR, 예스퍼

답변

1

MATCH()는VBA날짜를 좋아하지 않는다.는 .................... 너무 : 및 Variant`으로 희미한 행`에

Option Base 1 
Option Explicit 

Sub Macro() 

Dim maxdate As Date 
Dim k As Long 
Dim row As Long 

maxdate = WorksheetFunction.Max(Range("A:A")) 

If maxdate < VBA.Date And maxdate > 0 Then 
    row = Application.WorksheetFunction.Match(CLng(maxdate), Range("A:A"), 0) 
    If Not IsError(row) Then 
     k = row 
    Else: 
     MsgBox maxdate & " not found!" 
    End If 
End If 

If maxdate = 0 Then 
    k = 0 
End If 
MsgBox k 
End Sub 
+0

어쩌면 바람직는 수, 대신'Application.Match'를 사용 검색 문자열을 찾을 수없는 경우 오류 값을 반환합니다. 그런 다음 예외를 처리하기 위해 If IsError (row) ...를 테스트 할 수 있습니다. –

+0

@DavidZemens 좋습니다!! ..................... ** Find() ** 메서드를 사용하면 어떤 이점이 있습니까 ?? –

+0

'Row'가 정수 인 경우에도 테이블 행의 크기에 따라 오버플로 오류가 발생할 수 있습니다. :) –

관련 문제