2014-02-11 2 views
0

범위에서 날짜를 찾으려고합니다. 이 작업은 2 자리 숫자로 (1 월에서 9 월까지) 개월 동안 제대로 작동하지만 나머지 개월에는 작동하지 않습니다. 테스트 루틴을 만들기 위해 문제를 격리하는 데 어느 정도 시간이 걸렸습니다. I는 rReturn에 대한 각각의 세포를 얻는 제 9 개EXCEL VBA - 날짜가 두 자리 숫자로 된 월간 작동하지 않습니다.

루프
With wsData.Range("A1:A12") 
For i= 1 To 12 

    Set rReturn = .Find(What:=CDate("12." & i & ".2013"), LookIn:=xlValues, LookAt:=xlWhole) 

Next i 
End With 

: 여기

이것이 코드 데이터

12.01.2013 
12.02.2013 
12.03.2013 
12.04.2013 
12.05.2013 
12.06.2013 
12.07.2013 
12.08.2013 
12.09.2013 
12.10.2013 
12.11.2013 
12.12.2013 

의 범위이다. 그러나 마지막 3 루프 (10 ~ 12)의 경우 반환 값은 "아무것도"아닙니다.

+0

은 [이]에 모습을 (가지고 테스트 http://stackoverflow.com/questions/13626001/excel-vba-writing- 시도 배열 - 셀 - 매우 - 천천히/13629907 # 13629907) 나는 Find 함수를 사용하여 날짜를 찾는 성능이 매우 좋지 않은 유사한 상황을 겪었습니다. 아마 도움이 될 수도 있습니다. – Octavio

+0

cDate는 날짜에 대한 시스템 설정을 사용합니다. 아마도 날짜와 월의 순서를 변경하고, 먼저 월을 넣어야합니다 – CRondao

답변

0

문제는 날짜와 관련이 없습니다. 그들은 문자열입니다. 또한 정확한 검색 문자열을 구성 할 수 있도록 i의 형식을 지정해야합니다.

Set rreturn = .Find(What:="12." & Format(i, "00") & ".2013", _ 
        LookIn:=xlValues, LookAt:=xlWhole) 

이 시도하고

Sub Sample() 
    Dim wsData As Worksheet 
    Dim SearchString As String 
    Dim i As Long 

    Set wsData = ThisWorkbook.Sheets("Sheet1") 

    With wsData.Range("A1:A12") 
     For i = 1 To 12 
      SearchString = "12." & Format(i, "00") & ".2013" 
      Set rreturn = .Find(What:=SearchString, LookIn:=xlValues, LookAt:=xlWhole) 

      If Not rreturn Is Nothing Then _ 
      Debug.Print SearchString & " found in " & rreturn.Address 
     Next i 
    End With 
End Sub 
관련 문제